Release notes

FEATURE

Permission prompts now show the whole compound command

When you clean up a batch of files, you tend to chain several actions into one shell command. Until now, if a single fragment of that chain needed approval, the permission prompt showed you only that fragment and hid everything around it — rather like being asked to sign a contract with one clause uncovered and the rest under a sheet of paper. Now, whenever any part of a compound command needs approval, the prompt lays out the full command exactly as it will run, so you can see what comes before and after before letting it through.

FEATURE

Print mode gains cache accounting and a real eligibility gate

When you wire the AI into an automated pipeline, nobody is watching the screen, so problems surface only afterwards. This release closes two gaps in headless print mode. First, the json and stream-json usage output now carries a cache_read_tokens field, so a non-interactive consumer can work out how much of the prompt was served from cache and attribute those hits itself. Second, running with -p used to send the prompt before the account-eligibility check had finished, which let ineligible accounts slip past the gate the interactive UI enforces; it now waits for the check. An unstaffed shop is exactly the place where the receipt has to be itemised and the door check cannot be skipped.

BUGFIX

Disabled plugins no longer keep running their hooks

Turn a plugin off and you would expect it to fall silent. It did not. Its hooks kept firing in the background, and the other customizations it brought along stayed in effect. The nastiest version of this was a hook that was already broken: it would jam the file-editing tools, and since you had disabled the plugin long ago, it never occurred to you to suspect it — you just sat there wondering why nothing would save. Disabling now really disables: the hooks and everything else the plugin contributed go quiet together. An employee leaves but keeps the door badge; the person is gone and the badge still opens the door. This time the badge comes back too.

BUGFIX

MCP OAuth now works with providers that bend the spec

Your company runs customers through Salesforce and projects through Atlassian, you want the AI to read from them directly, and you get stuck at authorization. The culprit is the OAuth flow behind MCP, the protocol that connects the AI to external tools: neither provider follows the spec to the letter, the issuer details fail to line up, and validation rejects the whole thing. Issuer validation is now relaxed, and the refresh_token grant is included, so an expiring authorization renews itself instead of sending you back to the login screen. It is the travel adapter approach: sockets genuinely differ between countries, and bringing a plug that fits beats demanding the country rewire.

BUGFIX

`/btw` works as the very first action in a fresh session

You open a fresh session, ask nothing yet, and type /btw to drop in an aside first — and it used to fail on the spot with "parent conversation not found", the parent being the turn the aside was meant to hang off. Errors like this are the most disorienting kind: you have done nothing wrong, the very first thing you try hits a wall, and the message names something you have never heard of. Using it as the opening action now works. You have just unwrapped a notebook and want a sticky note on page one; the absence of earlier pages is no reason to refuse.

BUGFIX

Copying CJK text on Windows no longer corrupts it

Copy a line of Chinese, Japanese or Korean on Windows and paste out a row of question marks and empty boxes — that really did happen. The damage occurred at the moment the text entered the clipboard: non-ASCII characters were not encoded correctly, so the characters were already broken in transit and no destination could reassemble them. You copy an error message to show a colleague, they receive a blob of symbols, and you end up sending a screenshot instead. The encoding is fixed: what you copy is what you paste. A photocopier that accepts the page but prints half the characters as noise does not need better paper; it needs a new machine.

Original changelog

Original changelogPermission prompts now show the whole compound command
Improved permission prompts for compound shell commands so the full command is shown when any part of it needs approval.
Original changelogPrint mode gains cache accounting and a real eligibility gate
Improved headless print mode by adding a `cache_read_tokens` field to the `json` and `stream-json` usage output, so non-interactive consumers can attribute prompt-cache hits.
Fixed print mode (`-p`) sending a prompt before the account-eligibility check finished, which let ineligible accounts bypass the check the interactive UI enforces.
Original changelogDisabled plugins no longer keep running their hooks
Fixed disabled plugins still running their hooks and contributing other customizations, which could keep a broken hook active and break file-editing tools even after the plugin was turned off.
Original changelogMCP OAuth now works with providers that bend the spec
Fixed MCP OAuth against providers that do not strictly follow the spec (such as Salesforce and Atlassian) by relaxing issuer validation and including the `refresh_token` grant.
Original changelog`/btw` works as the very first action in a fresh session
Fixed `/btw` failing with a "parent conversation not found" error when used as the very first action in a fresh session.
Original changelogCopying CJK text on Windows no longer corrupts it
Fixed clipboard corruption of CJK and other non-ASCII text when copying on Windows.