May twenty-second, twenty twenty-six. Claude Code two point one point one forty-nine landed with a feature that should have existed from day one. Slash usage now shows a per-category breakdown of what is actually driving your limits. Skills, subagents, plugins, and per-MCP-server cost, all broken out separately. If you have been staring at your usage bar wondering why it is climbing so fast, you can now see exactly which plugin or MCP server is eating your allocation.
This matters more than it sounds. When you are running a setup with multiple MCP servers, several plugins, and skills that spin up subagents, your token consumption becomes opaque. You know you are burning through limits. You do not know whether it is your Director MCP server chatting too much, a plugin that loads its entire skill manifest on every turn, or a subagent that keeps re-reading the same context. Now you can see the breakdown, identify the expensive component, and decide whether to optimize it or accept the cost.
The slash diff detail view can now be scrolled with the keyboard. Arrows, j and k for vim-style movement, page up and page down, space, home, and end. If you have been reaching for the mouse every time you wanted to scroll through a long diff, that is over. It sounds small. It is not small if you review diffs fifty times a day.
Markdown output also now renders GitHub-flavored task list checkboxes properly. The dash bracket space bracket pattern for todos and the dash bracket x bracket pattern for done items now show as actual checkboxes instead of plain bullets. A nice touch for anyone using Claude to manage task lists in markdown.
Here is the one that matters for security. A PowerShell permission bypass was fixed where built-in cd functions like cd-dot-dot, cd-backslash, cd-tilde, and drive letter shortcuts could change the working directory undetected. That meant a later command could read files outside the workspace without triggering a permission check. The sandbox write allowlist in git worktrees was also covering the entire main repository root instead of only the shared dot-git directory. And the permission parser was trusting stale variable-tracking values for PWD, OLDPWD, and DIRSTACK across directory-change commands.
Three separate path-traversal style issues in one release. None of these are dramatic exploits, but they are the kind of subtle permission gaps that matter when you are running Claude Code with any level of trust automation. If you are on Windows or WSL, update immediately. If you are on auto mode with file permissions, definitely update immediately.
And here is the bug that probably affected more people than any security fix. The find command in the Bash tool could exhaust the macOS system file and vnode table and crash the entire host on large directory trees. Not crash Claude Code. Crash your Mac. The operating system's file handle table would fill up, and everything on the machine would start failing.
If you ever had your Mac lock up mysteriously while Claude Code was running a search across a large project, this was probably why. The find command was not being constrained, and on a filesystem with hundreds of thousands of entries, it would open handles faster than the OS could reclaim them. Fixed now, but worth knowing it was there.
Two rendering fixes deserve attention. The progressive terminal display corruption that could appear in very long sessions and only cleared on terminal resize or restart got fixed. And garbled terminal output after a missed window-resize event now self-heals on the next frame instead of requiring control-L.
If you run long Claude Code sessions, and by long I mean the kind where you start in the morning and the session is still going at dinner, you have probably seen this corruption. Characters from previous renders bleeding through, styles applied to the wrong text, the terminal gradually becoming unreadable. The fix recycles the renderer's style pool, which means the visual state no longer accumulates errors over time. Your eight-hour session should now look as clean at hour eight as it did at hour one.
One more worth mentioning. Slash ultraplan and remote session creation were failing with a "could not capture uncommitted changes" error when the working tree had no real changes. The error was checking for uncommitted changes, finding none, and treating that as an error condition instead of a clean state. Classic off-by-one in the logic, where the absence of a thing was treated as a failure to find the thing.
This release is a maintenance release in the best sense. It does not add a flashy headline feature. It fixes the things that were quietly degrading the experience for power users running long sessions, complex plugin setups, and automated workflows. The kind of release where you update and things just feel better without being able to point at exactly why.