What
When Claude Code is driven from a program through the Agent SDK, it writes a stream of structured messages. It can now hold some of those messages back and send them in order around the start-up message that opens the session:
- If the start-up message is sent, held messages follow straight after it.
- If it never arrives, held messages are sent just before the final result.
If writing a held message fails, Claude Code logs "held frame write failed". It also now emits a signal when a control request, a request from the controlling program, is registered.
Why
Programs that read this stream may see messages in a different order than before, with the start-up message coming first.
Something disagreesSomething we can check disagrees with this entry, or the writer said they could not settle it.
The writer flagged doubt
What causes a message to be held back is not known.