[DOCS] Dynamic workflows docs do not explain that the `ultracode` keyword requires human-originated input
Documentation Type
Unclear/confusing documentation
Documentation Location
https://code.claude.com/docs/en/workflows
Section/Topic
The “Ask for a workflow in your prompt” subsection and the description of the ultracode keyword trigger.
Current Documentation
The workflows page currently says:
To run a single task as a workflow without changing the session's effort level, include the keywordultracodein your prompt. Asking in your own words, for example "use a workflow" or "run a workflow", also works: Claude treats a direct request as the same opt-in. Before v2.1.160 the literal trigger keyword wasworkflow; natural-language requests work in both versions.
It also says:
Claude Code highlights the keyword in your input and Claude writes a workflow script for the task instead of working through it turn by turn.
What's Wrong or Missing?
The documentation describes the keyword as a property of any prompt input, but does not state that the keyword opt-in is limited to direct human-originated input. This distinction matters for channels and cross-session messaging: a webhook payload or a relayed PR comment can contain the literal word ultracode without representing a new workflow request from the user.
Claude Code v2.1.210 fixed the ultracode keyword opt-in firing on non-human-originated input, including webhook payloads and relayed PR comments. The docs should describe this authority boundary so users understand why the same text can trigger a workflow in their prompt but not when it arrives through an external or peer message.
The Agent SDK reference already exposes human, channel, and peer message origins, but it does not connect those origins to the workflow keyword-trigger behavior. The channels guide likewise explains that webhook content is injected into the session and that Claude acts on the message, without explaining that injected content cannot opt the session into a workflow merely by containing ultracode.
Suggested Improvement
Add a note to the keyword-trigger section, for example:
The ultracode keyword opt-in applies only to direct human-originated prompt input. Text arriving from a channel, webhook, scheduled delivery, peer session, or other relayed source does not opt the session into a dynamic workflow just because it contains the keyword. Requires Claude Code v2.1.210 or later.
Cross-reference this behavior from the channels documentation and the Agent SDK message-origin reference. Clarify that a human can still explicitly request a workflow after reviewing an externally delivered message.
Impact
Medium - Makes feature difficult to understand
Additional Context
Affected Pages:
| Page | Line(s) | Context |
|------|---------|---------|
| https://code.claude.com/docs/en/workflows | 106-123 | ultracode keyword opt-in and highlighted prompt behavior |
| https://code.claude.com/docs/en/channels-reference | 147-159 | Webhook payload injection and Claude acting on the received message |
| https://code.claude.com/docs/en/channels-reference | 416-434 | Inbound channel messages and sender gating |
| https://code.claude.com/docs/en/agent-sdk/typescript | 1309-1336 | SDKMessageOrigin values for human, channel, and peer messages |
Total scope: 3 pages affected
The behavior change was released in v2.1.210. The note should distinguish message delivery from user authority: channels and peer sessions may deliver text to Claude, but their text must not be treated as a direct human workflow opt-in.