Claude Code Ships Fast. These recent 7 Updates Are Worth Knowing.
7 Claude Code changes from v2.1.121–2.1.128 that power users need to know: new commands, auth fixes, and agentic workflow improvements.

Claude Code doesn't announce itself loudly. It just ships.
Between April 28 and May 4 (six days) five versions dropped: 2.1.121, 2.1.122, 2.1.123, 2.1.126, and 2.1.128. The changelog is dense. Most of it is noise: UI polish, edge-case fixes, localization tweaks. But buried in there are changes that affect how you work every day — a new cleanup command, a silent data-loss bug that's now fixed, and a capability expansion for hooks that most people haven't noticed yet.
I went through all of it. Here are the 7 updates you can't skip — plus a bonus at the end.
The 7 updates you can't miss
1. claude project purge — finally, a clean-slate command
Added in v2.1.126
Claude Code accumulates state. Sessions, transcripts, task history, file modification logs — it all piles up. If you've inherited someone else's Claude Code setup on a repo, or finished a project and wanted to start clean, you know the pain of manually hunting through .claude/ directories.
claude project purge [path] fixes that. It deletes everything: transcripts, tasks, file history, and the project's config entry. A few useful flags:
claude project purge . # Purge current project
claude project purge . --dry-run # Preview what would be deleted
claude project purge . -y # Skip the confirmation prompt
claude project purge . --all # Purge all projects at onceReach for this before handing off a repo, after a large experiment wraps up, or when CI sessions have left behind state you'll never revisit.
2. OAuth login finally works in WSL2, SSH, and containers
Fixed in v2.1.123 and v2.1.126
This was a known blocker. Running claude auth login inside WSL2, a Docker container, or a remote SSH session meant the OAuth redirect would try to open a browser, the callback couldn't reach localhost, and the flow would fail — silently, or with a timeout that told you nothing useful.
The fix: Claude now accepts the OAuth code pasted directly into the terminal. If the browser can't complete the callback, you copy the code and paste it in.
Also resolved in the same batch: timeouts on slow or proxied connections, IPv6-only devcontainers, and a rare race condition that could wipe a valid refresh token during concurrent credential writes. If you've been working around auth issues in remote environments, update and try again — this should be clean now.
Reality check: This was one of the most frequently reported friction points for teams running Claude Code in containerized or remote dev environments. The workaround before this fix was messy — now it just works.
3. /model picker now reads your gateway's actual model list
Added in v2.1.126
If your team routes Claude Code through an internal model gateway — for cost control, compliance, or provider abstraction — the /model picker used to be useless. It showed Anthropic's default model list, not whatever your gateway exposed. You'd have to set model IDs manually every time.
Now, when ANTHROPIC_BASE_URL points at an Anthropic-compatible gateway, /model fetches the list from your gateway's /v1/models endpoint and displays those instead. The picker becomes a live view of what your deployment actually supports. For teams with multiple Claude tiers or region-specific routing, this removes a constant source of friction.
4. Paste a PR URL into /resume to find the session that created it
Added in v2.1.122
Small feature. Large daily utility.
When reviewing a PR days after Claude helped build it — or when a teammate asks "what was Claude doing here?" — you can now paste the PR URL directly into the /resume search box and it finds the originating session.
Works with GitHub, GitHub Enterprise, GitLab, and Bitbucket URLs. No more scanning through session timestamps trying to correlate with commit history.
5. EnterWorktree was silently dropping your unpushed commits
Fixed in v2.1.128
This one matters. When Claude used EnterWorktree to create a new branch, it was branching from origin/<default-branch> — not your local HEAD. If you had commits that hadn't been pushed yet, they simply weren't included in the new worktree.
Warning: No error. No warning. Just missing work.
The fix: EnterWorktree now branches from local HEAD as the documentation always described. If you use multi-worktree workflows — parallel feature development, isolated experiments, sub-agent branching — you need to know this was broken. It's correct now.
6. PostToolUse hooks can replace output for any tool, not just MCP
Added in v2.1.121
This one flew under the radar. PostToolUse hooks now support hookSpecificOutput.updatedToolOutput for all built-in tools — Bash, Read, Write, Edit, everything. Previously, intercepting and replacing tool output was only possible for MCP servers.
Key Takeaway: Your hook script can now intercept what any tool returns to the model and replace it before Claude sees it.
A few patterns this makes practical:
- PII scrubbing: strip tokens or credentials from
Bashoutput before the model processes them - Output normalization: reformat noisy legacy tool output that doesn't parse cleanly
- Context injection: append relevant metadata to
Readresults without touching the actual file
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "python3 ~/hooks/sanitize_output.py"
}
]
}
]
}
}The hook script reads the tool's output, transforms it, and writes the replacement to stdout. Claude sees the transformed version. If you've been building custom Claude Code workflows and felt limited by the hook system, this is the change that makes it genuinely powerful.
7. A failing grep no longer cancels sibling parallel tool calls
Fixed in v2.1.128
Claude often runs multiple shell commands in parallel to gather context efficiently — a grep, a git diff, an ls. There was a bug: if one read-only command failed with a non-zero exit code (which is what grep returns when it finds nothing), it would cancel all the other concurrent calls.
A grep that matched nothing was silently aborting your git diff. Claude would be missing context with no indication of why.
This is fixed. Failing read-only shell commands (grep, git diff, ls, find) no longer cascade cancellations to sibling calls. Parallel context gathering now behaves correctly.
Bonus: /color with no args picks a random session color
Added in v2.1.128
Not every update needs to be infrastructure. Running /color now picks a random color for your session - useful if you run multiple Claude Code instances in parallel and want a quick visual way to tell them apart at a glance.


Each /color call picks a different random session color
Small thing. Fun fact worth knowing.
Takeaway
Six days. Five versions. A few themes run through this batch:
- Project hygiene is now first-class.
claude project purgegives you a proper cleanup command — not manual directory deletion. - Remote-first auth is fixed. WSL2, SSH, containers, proxied connections — the OAuth loop should work cleanly now.
- Agentic workflows got more reliable. The
EnterWorktreecommit fix and the parallel shell call fix are both correctness improvements that matter most when Claude is operating autonomously. - Hooks are growing up. PostToolUse output replacement for all tools is a real capability expansion for teams treating Claude Code as infrastructure, not just an assistant.
The pace isn't slowing down. If you want to track this yourself, check out the Claude Code Changelog.
If these updates have you rethinking your Claude Code setup, it's worth pairing them with the right plugin stack, here are the 7 Claude Code plugins that are non-negotiable.
Want to talk through what Claude Code can do at the team or production level? Let's talk.
