Mid-stream failure policy (yoyo #997/#991, should_retry_after_partial): CC 2.1.288 "Fixed mid-response API timeouts failing the turn: non-interactive sessions and subagents now continue from the partial response, and thinking-only responses are retried". Also "Fixed an overloaded or server error arriving right after a thinking block ending the turn with an error instead of being retried", and earlier "Fixed claude -p text output dropping the answer already produced when a turn dies on a mid-stream API error". Subagents "automatically continue instead of ending with an incomplete response" after a mid-stream cut. CC's design is CONTINUE from the partial rather than yoyo's retry-from-scratch (duplicates on a pipe) or abort (loses the turn): a third option for #997.
Symlink TOCTOU: CC fixed file tools following a symlink swapped inside the working directory after the permission check; Read deny rules not applying to Grep/Glob through a symlinked search path; deny rules on symlinked directories not applying when a path was given by its real location. yoyo Day 219 config_resolve.rs names the check-then-write race as an open limit.
Headless MCP disclosure: mcp_server_errors in the stream-json init event; HTTP status + error text when an MCP server fails to connect; warning for MCP config values with hidden whitespace (yoyo has config_whitespace_warning).
Nested subagents to depth 3 by default (was 1), CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH; yoyo RLM cap is also 3.
claude -p hanging after an internal error now reports and exits 1; headless resume saves cost totals at exit.
Takeaway: the mid-stream-failure class is converging on continue-from-partial for headless runs.