What
CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS is now accepted on being greater than zero alone, since the value is already validated as a number earlier. Behaviour is effectively unchanged.
Evidence
CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Names in the bundleCLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS
The entry above is what we published on the day. These lines were added later, as Anthropic's own pages caught up, and they sit beside the original rather than replacing it.
Added since
A small documentation edit on Environment variables touched a line naming CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS after this was published.
| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Override the time budget in milliseconds for [SessionEnd](/docs/en/hooks#sessionend) hooks. The value is also the timeout for each hook that sets no `timeout` of its own. Applies to session exi…env-vars see the edit
Confirmed since
Anthropic's documentation has since written up CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS, on Claude Code changelog.
* Fixed `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` not extending SessionEnd hooks that have no per-hook `timeout` (they were still cancelled after 1.5 seconds)changelog see the edit
One source agreesOne thing we can check says the same as this entry.
Anthropic's documentation agrees
Anthropic's documentation has since written up CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS, on Claude Code changelog.