Remote/CCR sessions now hold a keepalive open while a hook runs, gated behind a flag, to avoid idle timeouts on slow hooks
What
A new internal mechanism (referred to internally as rWt/Uri) keeps a remote session's activity/keepalive signal open for as long as a hook (an automated script Claude Code runs at certain points) is executing. The hold duration is calculated from the hook's own timeout setting plus a fixed pad, so a slow-running hook doesn't cause the connection to be treated as idle.
- It excludes certain hook types from this hold:
PermissionRequest,Notification,SessionEnd, andMessageDisplayhooks. - It requires the
CLAUDE_CODE_REMOTE_SEND_KEEPALIVESsetting to be enabled. - It is further gated by a growthbook feature flag, so it is off by default.
- If a hold ends up exceeding its computed budget, a
session_activity_hook_hold_expiredwarning is logged.
Why
This is meant to stop a remote or CCR (cloud/bridge) session from idle-timing-out just because a hook it's waiting on is taking a while to finish. Since it's gated off by default, most users won't notice any behavior change yet.
tengu_ccr_hook_keepalive_enabled Not enough to sayNothing here resolved what this flag was doing on this version, so nothing here should be read as on or off.
This account: no value returned · anonymous baseline: no value returned · compiled default in v2.1.271: off
These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.
Read once, for one account on one subscription tier, against v2.1.271. It isn't a statement about your account. What a flag value here can and cannot tell you
A reading is one sample. Claude Code evaluates its flags remotely, so no client sees the targeting rule behind a value and this says nothing about your account.
New in this build: tengu_ccr_hook_keepalive_enabled