{"version":"2.1.227","anchor":"headless-mode-reports-fatal-errors-instead-of-dying-quietly","canonical_anchor":"headless-mode-reports-fatal-errors-instead-of-dying-quietly","heading":"Headless mode reports fatal errors instead of dying quietly","tier":"notice","area":"Headless Mode","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227\/e\/headless-mode-reports-fatal-errors-instead-of-dying-quietly","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.227","markdown":"### Headless mode reports fatal errors instead of dying quietly\n\nHeadless runs now print a real reason to stderr and exit 1 instead of dying silently.\n\n**What**\n\nFailures 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.\n\n**Details**\n\n- A `tengu_headless_fatal_error` event 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.\n- Applies to every headless (`-p`) run, no flag required.\n\n**Evidence**\n\n`tengu_headless_fatal_error`\n\n- Area: Headless Mode\n- Tier: You'll notice\n- Useful: 4\/5\n- Signal: 2\/5"}