What
- The SDK session class now accepts a
verbatimPromptsconstructor option. By default (verbatimPrompts: false), outgoing messages are taggedclient_composed: true; whenverbatimPromptsis set, that tag is no longer added. - The
client_composedschema field's documentation was expanded to explain exactly what that marker does: turns marked this way (composed by the client rather than typed by the user) skip @-path file-mention expansion, slash-command dispatch, @server:resource MCP mention expansion, and the whole turn-start attachment pass (nested CLAUDE.md/rules files, skill/tool listings, reminders). The separate between-tool-calls attachment pass is unaffected.
Why
This gives SDK integrators control over whether their outgoing messages get Claude Code's normal client-side preprocessing (mention/slash-command expansion, context attachment) or are sent through verbatim, which matters when a client wants precise control over exactly what content reaches the model.
Names in the bundleverbatimPrompts
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
Confirmed since
Anthropic's documentation has since written up verbatimPrompts, on Agent SDK reference - TypeScript.
| `verbatimPrompts` | `boolean` | `false` | Deliver every prompt as written. The SDK sends each user message with `client_composed: true`. See [`client_composed`](#sdkusermessage) for what Claude Code skips on those messages. Use this opti…agent-sdk/typescript see the edit
One source agreesOne thing we can check says the same as this entry.
Anthropic's documentation agrees
Anthropic's documentation has since written up verbatimPrompts, on Agent SDK reference - TypeScript.