Claude Code 2.1.229: /commit-push-pr gets stricter, OAuth and Windows runners fixed
2.1.229 stops /commit-push-pr from auto-approving dangerous flags, fixes MCP OAuth against strict authorization servers, and requires --base-dir for self-hosted runners on Windows, plus a batch of crash fixes.
Claude Code 2.1.229 shipped on August 12. A fix-heavy release, a good thirty entries, with three changes that hit habits you rely on directly: /commit-push-pr auto-approval, MCP OAuth, and self-hosted runner startup on Windows. Here's what matters.
/commit-push-pr no longer auto-approves dangerous flags
Until now, /commit-push-pr auto-approved the git and gh commands it ran, including ones carrying flags like --force, --amend, or --no-verify. As of 2.1.229, that's no longer true: those dangerous flags now go through an explicit permission prompt.
In practice, if you built a workflow or automation around /commit-push-pr counting on blanket auto-approval, expect permission prompts where there weren't any before. It's the kind of change that can look like it broke a script, but it closes a real gap: a git push --force or a commit --no-verify fired without confirmation by an agent that goes off the rails is exactly the scenario this fix neutralizes.
MCP OAuth: the silent failure against strict authorization servers is fixed
If you were connecting an MCP server whose OAuth authorization rejected localhost as a redirect URI (a strict but spec-compliant behavior), the connection failed. Claude Code now uses 127.0.0.1 instead of localhost in the redirect URI, which unblocks those servers without you having to change anything on your end.
Self-hosted runner on Windows: --base-dir is now required
Starting a self-hosted runner on Windows now requires an explicit --base-dir: there's no default checkout directory on that platform anymore. If you're running Windows runners without that flag in your launch command, they won't start until you add it.
A batch of crash fixes
Several annoying crashes are gone in this release:
- A
RangeErrorcrashed the session when a progress bar or markdown table rendered in a very narrow terminal window, including at startup ofclaude --continueor--resume. - A tool call with a non-string value for
glob,file_path, orcommandcrashed the session to the error screen, even when resuming with--resume. - Long responses partly disappeared while streaming and sometimes printed twice in the terminal.
- On Windows, referencing a file by an extended-length (
\\?\) or UNC path crashed the session.
The rest, worth a skim
- Sandbox: IPv6 literals in network domain lists now need brackets (
[::1]:443), and ambiguous spellings are enforced fail-closed and flagged by/doctor. - Gateway: SSE keepalive pings prevent idle-timeout disconnects on Vertex and Bedrock upstreams during long thinking pauses.
- Plugin marketplaces: a new
commandsource lets a local tool (an IDE, for instance) print a plugin's directory, re-resolved each session and applied without a restart. ListAgents: disconnected Remote Control sessions are now markedoffline, and your cloud sessions are labeledcloud./model: no longer rejects Sonnet/Opus 1M for claude.ai subscribers using a customANTHROPIC_BASE_URLgateway.- Auto mode: no longer fails on every tool call for users who disable the attribution header via
CLAUDE_CODE_ATTRIBUTION_HEADER. - Remote Control: clients no longer get stuck on a working spinner after a slash command typed in the laptop terminal.
/install-github-app: the generated review workflow no longer completes without posting its review on the pull request.- IDE: editing a file with thousands of diagnostics no longer stalls the UI for several seconds while the IDE extension is connected.
claude plugin: one-shot commands no longer leave a stray liveness file that blocked cleanup of outdated plugin versions.- Dynamic workflows: no longer use the host machine's core count inside CPU-limited containers, using the container's limit instead.
- SDK and
--input-format stream-jsonsessions: a whitespace-only message no longer returns a 400 error. - Compaction: conversations whose messages alone exceed the API's 32 MB limit now fail once with a clear message instead of retrying compaction in a loop.
- OpenTelemetry: export from Claude Desktop is no longer rejected by the Desktop-managed gateway when that same gateway also serves as the telemetry endpoint.
- self-hosted runner: sessions no longer exit at startup when
managed-mcp.jsonis deployed and the server delivers MCP servers; those servers are now skipped with a warning. Acheckouthook stuck on a Git Credential Manager prompt now fails fast instead of hanging. - Workflows: sibling agents sharing the same prompt prefix are now staggered so later agents read the cached prefix instead of paying for it again (
CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS=0disables this). - VSCode: "Report a problem" and
/bugnow open the built-in feedback dialog instead of a retired survey link. The/btwside panel is resizable. Session groups now show up in the sidebar (right-click to create, rename, or delete; Cmd/Ctrl- or Shift-click to move several sessions at once).
Should you update
Yes, especially if you trust /commit-push-pr blindly or manage Windows self-hosted runners: both changes touch a behavior you were taking for granted. The crash-fix batch alone is worth the update if you've already hit one of these.
Source: official Claude Code changelog.
Pierre Rondeau
Developer and indie builder. I build products and automations with AI. Creator of Claude Hub.
LinkedIn