fix(cron): pass agent identity through delivery path (#16218)#16242
Merged
steipete merged 2 commits intoopenclaw:mainfrom Feb 14, 2026
Merged
fix(cron): pass agent identity through delivery path (#16218)#16242steipete merged 2 commits intoopenclaw:mainfrom
steipete merged 2 commits intoopenclaw:mainfrom
Conversation
0bc773b to
49e6379
Compare
49e6379 to
4bc5949
Compare
Cron delivery messages now include agent identity (name, avatar) in outbound messages. Identity fields are passed best-effort for Slack (graceful fallback if chat:write.customize scope is missing). Fixes openclaw#16218
4bc5949 to
dfc3553
Compare
Contributor
|
Landed via temp rebase onto main. Thanks @robbyczgw-cla! |
hamidzr
pushed a commit
to hamidzr/openclaw
that referenced
this pull request
Feb 14, 2026
…openclaw#16242) * fix(cron): pass agent identity through delivery path Cron delivery messages now include agent identity (name, avatar) in outbound messages. Identity fields are passed best-effort for Slack (graceful fallback if chat:write.customize scope is missing). Fixes openclaw#16218 * fix: fix Slack cron delivery identity (openclaw#16242) (thanks @robbyczgw-cla) --------- Co-authored-by: Peter Steinberger <[email protected]>
openperf
pushed a commit
to openperf/moltbot
that referenced
this pull request
Feb 14, 2026
…openclaw#16242) * fix(cron): pass agent identity through delivery path Cron delivery messages now include agent identity (name, avatar) in outbound messages. Identity fields are passed best-effort for Slack (graceful fallback if chat:write.customize scope is missing). Fixes openclaw#16218 * fix: fix Slack cron delivery identity (openclaw#16242) (thanks @robbyczgw-cla) --------- Co-authored-by: Peter Steinberger <[email protected]>
openperf
pushed a commit
to openperf/moltbot
that referenced
this pull request
Feb 14, 2026
…openclaw#16242) * fix(cron): pass agent identity through delivery path Cron delivery messages now include agent identity (name, avatar) in outbound messages. Identity fields are passed best-effort for Slack (graceful fallback if chat:write.customize scope is missing). Fixes openclaw#16218 * fix: fix Slack cron delivery identity (openclaw#16242) (thanks @robbyczgw-cla) --------- Co-authored-by: Peter Steinberger <[email protected]>
mverrilli
pushed a commit
to mverrilli/openclaw
that referenced
this pull request
Feb 14, 2026
…openclaw#16242) * fix(cron): pass agent identity through delivery path Cron delivery messages now include agent identity (name, avatar) in outbound messages. Identity fields are passed best-effort for Slack (graceful fallback if chat:write.customize scope is missing). Fixes openclaw#16218 * fix: fix Slack cron delivery identity (openclaw#16242) (thanks @robbyczgw-cla) --------- Co-authored-by: Peter Steinberger <[email protected]>
GwonHyeok
pushed a commit
to learners-superpumped/openclaw
that referenced
this pull request
Feb 15, 2026
…openclaw#16242) * fix(cron): pass agent identity through delivery path Cron delivery messages now include agent identity (name, avatar) in outbound messages. Identity fields are passed best-effort for Slack (graceful fallback if chat:write.customize scope is missing). Fixes openclaw#16218 * fix: fix Slack cron delivery identity (openclaw#16242) (thanks @robbyczgw-cla) --------- Co-authored-by: Peter Steinberger <[email protected]>
Benkei-dev
pushed a commit
to Benkei-dev/openclaw
that referenced
this pull request
Feb 15, 2026
…openclaw#16242) * fix(cron): pass agent identity through delivery path Cron delivery messages now include agent identity (name, avatar) in outbound messages. Identity fields are passed best-effort for Slack (graceful fallback if chat:write.customize scope is missing). Fixes openclaw#16218 * fix: fix Slack cron delivery identity (openclaw#16242) (thanks @robbyczgw-cla) --------- Co-authored-by: Peter Steinberger <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes cron outbound delivery so agent identity is preserved end-to-end when sending through
deliverOutboundPayloads. Cron-generated messages were being delivered without the configured agent persona (name/avatar/emoji), which caused anonymous/default bot presentation in Slack.Problem
Cron delivery for isolated agent runs was successfully producing outbound payloads, but those messages appeared as the default app/bot identity instead of the configured agent identity. In practice, this made scheduled agent reports look like generic system posts rather than messages from the intended agent persona.
Root cause
Identity fields were not threaded through the outbound delivery plumbing:
deliverOutboundPayloadsdid not accept/passusername,icon_url,icon_emojicreateChannelHandler/createPluginHandlerdid not forward identity values into channel adapterssrc/cron/isolated-agent/run.ts) did not resolve and attach identity for outbound structured deliverySolution
I implemented minimal, targeted plumbing across the delivery path:
These fields are now forwarded into:
createChannelHandler(...)createPluginHandler(...)sendPayload,sendText, andsendMediaadapter callsCron path now resolves and supplies identity:
Slack outbound/send was also updated to accept and pass customize fields to
chat.postMessagewhen present.Before / After
Edge cases considered
icon_emojiis only sent whenicon_urlis absenticon_urlTesting
npm run lintpasses cleanlyAI Disclosure
This PR was prepared with AI assistance. I reviewed the code path, implemented the changes, and validated lint locally before opening the PR.
Greptile Overview
Greptile Summary
This PR adds agent identity threading (name, avatar, emoji) through the outbound delivery pipeline to fix cron-generated messages appearing as the default bot identity instead of the configured agent persona in Slack.
Key changes:
username,icon_url, andicon_emojiparameters toChannelOutboundContexttypedeliverOutboundPayloads,createChannelHandler, andcreatePluginHandlerindeliver.tssendTextandsendMedia) to accept and forward identity fields tosendMessageSlacksendMessageSlackto conditionally include identity fields inchat.postMessagecallsImplementation quality:
The implementation correctly ensures mutual exclusivity between
icon_urlandicon_emoji(Slack only accepts one). The avatar URL validation usingstartsWith("http")is simple but effective. All parameters are optional and only applied when present, maintaining backward compatibility. The changes are minimal and focused, affecting only 5 files.Confidence Score: 5/5
icon_urlandicon_emojiis correct according to Slack's API requirements. Other channels properly ignore these optional fields. No breaking changes or risky refactoring.Last reviewed commit: 0bc773b