What
A self-hosted runner is a program an organisation runs on its own machines to start Claude Code sessions for remote work (also called BYOC, bring your own compute). Several new runner options and settings appear in this release, none of which were present before.
Nested-repository diffs:
--diff-finds-nested-repositorylets the Changes pane, which shows file differences, look inside a git repository nested in another folder. The runner config fielddiffFindsNestedRepositorydefaults to off and is rejected whencapacityis more than 1.- When it is on and capacity is 1, the runner passes
CLAUDE_CODE_DIFF_COPY_ROOT(an environment variable, a setting handed to a program at start) to the session. The check is only active when that folder is given as an absolute path, and it needs git 2.32 or newer. It inspects the nested repository's .git folder and git settings, guarding against harmful .git contents. - Refusals are written to the error output as
[changes pane] repository not shown:lines, at most eight per session process. - When a session is interrupted for an update, the runner removes its copies of the Changes pane's git settings.
- A new hidden option
--runner-declares <names>lets the runner tell Claude Code what it handles. The value is a comma-separated list:diff-finds-nested-repositoryturns on the nested-repository mode in the session, andno-repository-checked-outsets a second flag. It is also accepted as--runner-declares=. In a BYOC remote environment (CLAUDE_CODE_REMOTEwithCLAUDE_CODE_ENVIRONMENT_KIND=byoc) declaringdiff-finds-nested-repositoryprints a warning. - The runner log explains that
--diff-finds-nested-repositoryis on and that any session-start script must put nothing before "$@", meaning it must pass every argument through. Older Claude Code builds reject the new option as unknown.
Workspace trust:
CLAUDE_CODE_IGNORE_PERSISTED_TRUSTis a new environment variable. When set, no saved record of you trusting a workspace counts in that process. The runner sets it to "1" unlesstrustWorkspaceis set, for example when started with--trust-workspace false.
Updates and other runner changes:
- The session handler takes
updatedChildBin,restartedHere,childUpdateBinandonChildUpdateReady, so a restarted session can launch an updated Claude Code binary, with empty start arguments. The binary can also be swapped throughCLAUDE_RUNNER_CLAUDE_BINandCLAUDE_RUNNER_UPDATE_BIN. - A session interrupted with the reason 'update' is reported as completed; the runner disconnects the worker first and sets
failedOnUpdateBuild. - The runner's bundle of trusted certificates for git is now filtered and reports
certificatesLeftOut, and a new setup failure kindSETUP_FAILURE_KIND_CHECKOUT_HOOK_TIMEOUTis added. - The proxy settings passed to sessions were reworked around
SELF_HOSTED_RUNNER_AGENT_PROXY_URL.
Why
These matter to people who operate self-hosted runners rather than ordinary command-line users. Runner setups that wrap the Claude Code launch command must pass every argument through, or the nested-repository diff option is turned off. Runners started without workspace trust now make sessions ignore earlier trust decisions.
New in this build: CLAUDE_CODE_IGNORE_PERSISTED_TRUST