A new 'governed git' system routes repo pushes through a session-scoped mount, with safety checks around it
What
Claude Code adds a subsystem called 'governed git' that routes a repository's push traffic through a 'git mount' - a relay that uses a session-scoped credential instead of a raw token. This affects self-hosted runners and cloud sessions:
- The push URL for a governed-git repo is rewritten to go through the mount, and this rewrite is kept in sync ('reconciled') live as the session's token changes, including on every token refresh.
- Rewriting is restricted to repositories hosted on
github.com; for any other host the existing push path is left alone and a notice is logged instead. - Before routing a fetch through the mount, the runner checks the local git version against a required minimum; if git is too old, or the runner is running with
--capacitygreater than 1 (which means git config is shared across multiple sessions), mount routing is skipped and a warning is logged rather than failing silently. - Governed-git session config can now also carry a push base URL and a list of "direct upstreams" (repos allowed to bypass the mount and use their plain upstream URL); if this list isn't supplied, or the git mount URL shape doesn't allow it, every source is reset to its normal upstream URL after setup, with a warning.
- New telemetry (
self_hosted_governed_push_url/represent_failedandself_hosted_governed_mount_read/represent_failed) fires when a session's token can't be re-presented to the remote service, warning that git traffic through the mount may be refused (git_token_mismatch) until it succeeds. - When a session ends, any branch whose source repo is only reachable through the mount is no longer pushed as part of cleanup - that push is skipped with an explanatory warning instead of failing or going to the wrong URL.
Why
This lets Claude Code enforce credential scoping and access policy on git pushes for governed repositories without changing how users interact with git, while adding fallbacks so that older git versions, shared-config runners, non-GitHub hosts, or mismatched tokens degrade to a safe, explicit warning rather than a silent failure or a push to the wrong place.
| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Deadline in milliseconds before Claude Code cancels a dialog it forwards to a remote client such as a [Remote Control](/docs/en/remote-control) or SDK host, or the approval dialog for a [held cross-…see the edit
Set the deadline for dialogs Claude Code [forwards to a remote client](/docs/en/remote-control#limitations), such as a Remote Control or SDK host, and for the approval dialog for a [held cross-session message](/docs/en/cross-session-messag…see the edit
Claude Code produces this error locally at the moment the switch is requested, before any API request is made. It applies when a model is set through the [Agent SDK](/docs/en/agent-sdk/typescript) `setModel()` method, by an app such as the…see the edit
The command also works where there is no terminal picker: in [non-interactive mode](/docs/en/headless) with `-p`, in the Agent SDK, in the desktop app, and over [Remote Control](/docs/en/remote-control). This requires Claude Code v2.1.260 …see the edit
You don't usually edit this key by hand. Run `/advisor` to open a picker that shows the current choice, the models that can advise, and **No advisor**. Claude Code saves your pick to this key in `~/.claude/settings.json`. If you pick from …see the edit
url: https://platform.claude.com/docs/en/api/compliance/apps/sessions/remotesee the edit
url: https://platform.claude.com/docs/en/api/compliance/apps/sessions/remote/listsee the edit
url: https://platform.claude.com/docs/en/api/compliance/apps/sessions/remote/messagessee the edit
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.
In an interactive session, while Remote Control is connected, the terminal shows an `/rc active` indicator that links to the session on claude.ai. The indicator is hidden when the terminal is too narrow to fit it. To see the session URL an…remote-control see the edit
Remote Control connects the Claude app to a Claude Code session running on your machine, so code execution and filesystem access stay local while you drive the session from your phone. Start the session on your computer with `claude remote…mobile see the edit
/remote on Environment variables