Headless runs now print a real reason to stderr and exit 1 instead of dying silently.
What's wrong with this entry?
Failures writing to the output stream, and rejections from a headless run, no longer end the process silently. Claude now prints a truncated human-readable reason to stderr, emits it as a stream-json message where applicable, and exits with code 1.
- A
tengu_headless_fatal_errorevent records where the failure happened, the message type, the control subtype, how many messages had been drained, how many stdout bytes were still outstanding, and whether stdout had already been destroyed. - Applies to every headless (
-p) run, no flag required.
tengu_headless_fatal_error
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.246
Non-interactive runs retry a response that was cut off mid-stream
Both mention headless mode
-
v2.1.246
Headless idle detection now waits for background tasks and undelivered notifications
Both mention headless mode
-
v2.1.246
Headless runs no longer report themselves busy while blocked on a prompt
Both mention headless mode