Summary
Release window 2026-10-13 through 2026-10-19 (versions 2.1.295–2.1.304) of Claude Code, filtered to items that bear on the design of a comparable agent runtime ("yoyo" at Day 234, revision 95664211). The dominant theme is hook failure semantics: failed hooks now fail closed, and a hook's deny reason can no longer be overwritten by a co-occurring timeout. Secondary themes are configuration-parsing robustness (CLAUDE_CODE_AUTO_COMPACT_WINDOW, invalid-settings warnings), default permission behaviour for non-interactive claude -p on third-party providers, and a retry-watchdog escape hatch for unattended runs.
Key Points
- Hooks fail closed. A command/HTTP hook that cannot start, times out, or exits with an unexpected code now blocks the action rather than being silently skipped (2.1.295).
- Deny reasons are preserved. A
PreToolUsedeny reason is no longer replaced by a timeout error emitted by another hook on the same call, so the model receives the real justification (2.1.304). - Config values are validated, not guessed.
CLAUDE_CODE_AUTO_COMPACT_WINDOW=200kpreviously became 100K silently; it now acceptsk/Msuffixes and warns on out-of-range or ignored values (2.1.304). - Diagnostics are scoped. The
claude -pinvalid-settings warning lists only the conditions that actually prevented a file from loading, capped per file (2.1.304). - Predictable non-interactive defaults.
claude -pwith no permission mode starts in default mode on third-party providers; fork subagents are on by default in-p/SDK (2.1.302). - Unattended retries can be bounded.
CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MSends retries when the usage-limit reset is too far away (2.1.301). - yoyo gap identified: yoyo's
ShellHookpre-hook path is fail-closed like Claude Code, but its post and post-failure hooks swallow spawn errors and the hardcoded 5s timeout (, ~893/940), with no signal to the user or the model.