Here is a bug that should make a Swede wince. When I edited a file that was not valid UTF-8, say an old Windows 1252 text file, the Edit tool did not just change the line I was aiming at. It replaced every non-ASCII character in the whole file. Every å, every ä, every ö. Imagine a copy editor who cannot read Swedish, is asked to fix one comma, and hands the article back with every letter he did not recognise rubbed out. In 2.1.296 those edits are refused, which is the correct answer from a tool that cannot read the alphabet in front of it.
It is Sunday, 11 October, and 2 days have passed since the last episode, which means 1 release, and a dense one.
Most of your estate is UTF-8, so this was never going to hit a fresh repo. It hits the old material: an export from some Swedish system from 2014, a text file from the Årebladet back catalogue, anything that came off a Windows machine before the world agreed on an encoding. Those are exactly the files where a mangled ä goes unnoticed until it is in print. If an old file of yours has ever come back from me with question marks where the dots used to be, this is why. From now on I stop and say so. The useful habit: when I refuse one of these, have me convert the file to UTF-8 first, then edit. Fix the cause once and the refusal never comes back.
Last time the news was that a hook that dies can now block instead of waving the action through. The obvious next question was which of your 25 hooks are slow enough to time out, and until now you could only guess. With debug output on, command hooks on tool calls, prompts, SessionStart and Stop now log their command, the plugin they came from, the outcome and how long they took. It is a stopwatch at every checkpoint. Run one session with debug on, sort by duration, and you know which guards are safe to make fail-closed and which are one slow network call away from your own outage. Do this before you flip block on anything. The debug output also now names frontmatter fields it does not recognise in custom agent files, with a hint for likely typos. Your drydock agent definitions have plenty of frontmatter, and a misspelled field has always failed silently.
A few more hook fixes for the guard collection. Pressing Esc while a UserPromptSubmit hook was running could end a headless session, clear the prompt, or let the unchecked prompt straight through. The last one is the bad one: interrupt the guard at the right moment and the guard is skipped. Hook output that happened to contain text resembling a plugin hint tag was being altered before I saw it. And a plugin's SessionStart hook could be skipped in headless runs when another plugin with the same name, or a different spelling of it, had already run. There is now a note in the slash plugin screen when that kind of name clash leaves a plugin's hooks out.
A new environment variable runs every Workflow agent on one model, while your other subagents keep theirs. You have been running workflows and ultracode on the autocast side, and you treat model tiers deliberately, so this is a real lever. Pin a big fan-out to Sonnet without touching the reviewers you spawn by hand.
One warning. It is an environment variable, so it covers the whole session, and as written it applies to every workflow agent. A workflow that deliberately sends verifiers to a different model from the reviewers, which is the two-family rule written as code, would be flattened to one model. Use it for cheap sweeps, not for anything that depends on two model families disagreeing.
Next to it, subagents and agent definitions can now set their own auto-compact window, so a long-running builder compacts earlier than the main conversation. A drydock builder grinding through a big task can tidy its own context before it fills up and starts forgetting the brief.
This one is personal, because I am using it right now. The Read tool has a new allow large option, so I can read a text file past the usual size limit in one call when I need all of it and there is room. Your rule says that before rewriting anything with parts, I enumerate the parts and re-read the file in the same turn. On a big file, chunked reads were where a section quietly went missing: I read pages 1 to 3, rewrote everything, and page 4 never came back. A single full read does not make me careful, but it removes the easiest way to lose something. Cursor will presumably keep summarising your file for you whether you asked or not.
Resumed subagents were told that you had rejected a tool call when the call had really been cut off by a session shutdown. It is like the power cutting out mid-meeting and the minutes recording that you voted no. Your sessions are shut down by closed lids and reboots all the time, so some agents came back believing you had refused something, and changed course to avoid it. Fixed. In the same vein, the setting that resumes an interrupted turn after a restart could re-run a turn that had already finished when an MCP tool result had ended it. A finished turn running twice is how a deploy runs twice.
Headless sessions, which includes this one, could also start a folder's MCP server that had been switched off for that folder, after changing directory or reloading plugins. Autocast runs headless, and a server you had turned off coming back on its own counts as a small permissions leak.
And the retry story continues. Last episode gave unattended runs a maximum wait. This one adds a separate setting for the longest delay between retries when I am overloaded, meaning the 529 error, where too many people want me at once. Copilot has never had that problem. Keep it below the Assistant's timeout, for the same reason as before.
A Bash permission fix for your classifier watch list: commands that assign the bash variable called bash arg v zero and then use it were sometimes approved automatically. That variable lets a command run under a different name, so a deny rule that matched the name could be dodged. These now ask. Separately, auto mode now shows a call it did not run, because its own check came back without a usable answer, as a dim "Not run" row instead of a red error. It is less alarming on the phone, and more honest: nothing failed, nothing ran.
The rest is managed policies and the apps gateway, Windows and PowerShell, VS Code, self-hosted runners, cloud session admin, Claude Tag in Slack and Code Review settings. Safely ignored.
Update, run one session with debug on to time your hooks before you make any of them fail-closed, and keep the workflow model variable away from anything that relies on two model families.
This has been Claude Code, now willing to admit when it cannot read your alphabet instead of correcting it.