keybindingFlavor no longer has any effect in Claude Code (2026)
keybindingFlavor is deprecated and inert in Claude Code v2.1.261 and later. The readline word-editing behaviour it gated is now on for everyone. Ctrl+W deletes back to whitespace while the Alt keys stop at punctuation, and neither can be rebound: the keybindings reference documents 115 actions and none of them is a word-editing action.
Updated on September 5, 2026
On this page
Quick Answer (September 2026). keybindingFlavor is deprecated and has no effect in Claude Code v2.1.261 and later. The setting existed to opt into readline-style word editing in the prompt; as of 2.1.261 that behaviour is simply on for everyone, so the key is inert rather than broken. Delete it from your settings if you like, but leaving it there does nothing and raises no error. The part worth knowing is what you get instead: Ctrl+W and the Alt word keys are not two spellings of one behaviour, and there is now no supported way to change either of them back.
Everything below is sourced from Anthropic's own interactive-mode reference, its keybindings reference, the
anthropics/claude-code changelog, and npm registry publish timestamps read directly. Version dates are pinned to artifacts rather than to release-blog datelines.
The short version of what changed
Three changelog entries, spanning about a fortnight.
Claude Code 2.1.238, verbatim: "Added a keybindingFlavor setting: set it to "readline" to make Ctrl+W in the prompt delete back to the previous whitespace, as in Bash; the default ("classic") is unchanged"
Claude Code 2.1.239, verbatim: "keybindingFlavor: "readline" now also matches Bash for word keys: Alt+F and Ctrl/Option+Right stop at the end of the word, Alt+D deletes to it (Ctrl+Y pastes it back), and punctuation separates words"
Claude Code 2.1.261, verbatim: "Changed the prompt's word-editing keys to match Bash: Ctrl+W deletes back to whitespace, Alt+F and Alt+D stop at word end, punctuation separates words; keybindingFlavor no longer has any effect"
So the arc is: a setting appears, gets extended a day later, and then the behaviour it gated becomes the only behaviour. The interactive mode reference confirms the end state in one sentence.
Interactive mode reference, verbatim: "These readline conventions apply in Claude Code v2.1.261 and later. The keybindingFlavor setting that turned them on in earlier versions is deprecated and has no effect. You can't remap these shortcuts in the keybindings configuration file, which has no actions for them."
Fifteen days, dated from the registry
Release blogs and digest newsletters carry their own publication dates, which are not the same thing as when a version shipped. The npm registry records the actual publish time for each version of
@anthropic-ai/claude-code:
Scroll to see more
| Version | Published (UTC) | What it did |
|---|---|---|
| 2.1.238 | 2026-08-20T18:01:54.712Z | Added keybindingFlavor |
| 2.1.239 | 2026-08-21T17:18:54.506Z | Extended it to the Alt word keys |
| 2.1.261 | 2026-09-04T17:49:34.927Z | Made it inert |
That is 14 days, 23 hours and 47 minutes from introduction to deprecation. If you never got round to trying it, you did not miss much of a window.
This is the second Claude Code capability in a fortnight to be taken away rather than changed, after the task-tracking tools stopped being available on newer models. Both are worth reading as the same kind of event: the fix is not to hunt for a replacement setting, it is to understand the new default.
What you should actually do
Nothing urgent. Concretely:
- You do not have to remove it. An inert key in
settings.jsonis not a validation error and Claude Code will not complain about it. - Remove it anyway if you like a clean file, because a reader of your dotfiles in six months will assume it does something.
- Do not go looking for a replacement key. There is not one. See the section below.
If your settings file currently reads like this, both variants now behave identically:
{
"keybindingFlavor": "readline"
}
{
"keybindingFlavor": "classic"
}
The second one is the interesting case. classic was the original default, and anyone who set it explicitly did so to keep the old behaviour. That intent no longer has a mechanism behind it.
The part that actually matters: Ctrl+W is not the same as the Alt keys
Every summary of this change frames it as one readline toggle. It is not. The docs describe two different definitions of "word" living side by side, and knowing which is which is the whole practical payoff.
The Alt family treats a word as a run of letters and digits, so punctuation is a boundary.
Interactive mode reference, verbatim: "The word shortcuts Alt+B, Alt+F, Alt+D, Option+Delete, and Ctrl+Backspace treat a word as a run of letters and digits, so punctuation such as _, ., and / separates words. With src/utils/foo.ts in the prompt, repeated presses of Alt+B stop at the start of ts, foo, utils, and src."
Ctrl+W does not.
Interactive mode reference, verbatim: "Ctrl+W is different: it ignores punctuation and deletes back to the previous whitespace, so one press removes all of src/utils/foo.ts."
Put concretely, with the cursor at the end of a typed path:
Scroll to see more
| Key | Words as | On src/utils/foo.ts |
|---|---|---|
Alt+B | letters and digits | four presses to reach the start |
Alt+D | letters and digits | deletes one segment at a time |
Ctrl+W | whitespace-delimited | one press removes the whole path |
That asymmetry is deliberate and it matches Bash, which is the point of the change. In practice it means Ctrl+W is your key for "scrub that whole file path" and Alt+Backspace or Option+Delete is your key for "just the extension, please". People reach for Ctrl+W expecting the segment-wise behaviour, get the whole path deleted, and conclude the terminal is broken. It is not.
Alt+D also stores what it deleted, so Ctrl+Y pastes it back. That makes Alt+D plus Ctrl+Y a serviceable transpose-and-move for a long path, which nothing in the release notes points out.
macOS needs one piece of terminal setup first
None of the Alt bindings work on a stock macOS terminal until you tell the terminal to send Option as Meta.
Interactive mode reference, verbatim: "macOS users: Option/Alt key shortcuts (Alt+B, Alt+F, Alt+D, Alt+Y, Alt+P) require configuring Option as Meta in your terminal."
This is the most common reason someone concludes the 2.1.261 change "did not land" for them. Ctrl+W will work, because it is a control character and needs no Meta handling, while every Alt binding silently does nothing. If half the keys respond and half do not, check the terminal before you check Claude Code.
There is no way back, and that is the real finding
The obvious move after a setting is removed is to reproduce it through the general rebinding system. Claude Code has a good one: ~/.claude/keybindings.json, opened with /keybindings, with namespaced actions, per-context bindings, chords and unbinding.
It does not help here. Reading the keybindings reference and counting the documented action names gives 115 distinct actions across all contexts, covering things like chat:submit, chat:newline, app:interrupt, autocomplete:accept and task:background. Not one of them is a word-deletion or word-movement action. The nearest match on a search for delete, word or kill is chat:killAgents, which is about stopping subagents.
The docs say so directly, in the same sentence that deprecates the setting: "You can't remap these shortcuts in the keybindings configuration file, which has no actions for them."
There is a second wrinkle that is easy to miss. That page carries a Reserved shortcuts table listing keys that cannot be rebound, and it names only Ctrl+C, Ctrl+D, Ctrl+M and Ctrl+[, each with a stated reason. Ctrl+W, Alt+F and Alt+D are not on it. So these keys sit in a third category that the documentation does not label: not rebindable, because no action exists for them, and not listed among the shortcuts documented as unrebindable either.
The practical consequence: if you preferred classic, your only remaining lever is your terminal emulator, not Claude Code. Some terminals will let you remap what a key sequence sends before the application ever sees it. That is outside anything Anthropic documents and outside what this tutorial can promise works.
The two release channels currently disagree
Checked today, the registry's
dist-tags for @anthropic-ai/claude-code read stable: 2.1.236 and latest: 2.1.261.
2.1.236 predates 2.1.238, which is the version that introduced the setting. So right now:
- On stable,
keybindingFlavordoes not exist at all, andCtrl+Whas the old pre-readline behaviour. - On latest, the readline behaviour is unconditional.
- There is no setting on either channel that makes one behave like the other.
If you run Claude Code on two machines and the same keystroke does different things, this is a likelier explanation than anything in your dotfiles. Check claude --version on both before you start editing settings.
One honest bound on that: this is a statement about what the dist-tags point at today. I did not read what stable pointed at during the fortnight the setting was live, so I am not claiming stable users could never reach it.
Languages written without spaces
A small detail that matters if you prompt in Chinese or Japanese, and which no summary of the change mentions.
Interactive mode reference, verbatim: "In text written without spaces, such as Chinese or Japanese, the word shortcuts still move or delete one word at a time."
So the word keys are not naively splitting on whitespace and punctuation in every script. The whitespace rule for Ctrl+W is the one that becomes awkward in a script with no spaces, since there may be no boundary to delete back to short of the start of the line.
Why most of what you will read says the opposite
If you search this setting today, most of the results will tell you to configure it. That is not carelessness on their part; the setting really was live configuration, and the pages describing it were accurate when written in the days after 2.1.238 shipped on 20 August 2026. Roughly a fortnight later it stopped being true.
Anthropic's own documentation is current and says the setting is deprecated. The thing to watch out for is that a search engine's cached preview text for that page can still show the older wording that tells you to set it, because snippets update on their own schedule. Open the page rather than trusting the preview. That is a good habit for any fast-moving tool, and this setting is a neat example of why: the correct source and the stale summary of it were sitting on the same result.
When a Claude Code behaviour changes under you, the changelog is the fastest way to find out what happened, because it records removals and deprecations that the reference docs, which describe the current state, will simply have stopped mentioning.
What this tutorial did not verify
Worth stating plainly. The behaviour described here is the documented and changelogged reading, taken from Anthropic's references and the published changelog. I did not run a Claude Code session and record keystrokes for this piece, so treat the key-by-key descriptions as the vendor's documented contract rather than as measurements taken here. The version numbers and publish timestamps, by contrast, are read directly from the npm registry and the changelog, and the action-name count is from the keybindings reference itself.
If you want a second worked example of a Claude Code settings key whose documented semantics surprise people, blockReadsOutsideWorkingDirectories behaves as a one-way latch where writing false does not turn it off.
Where this leaves you
For nearly everyone, the answer is: do nothing, and enjoy that Ctrl+W now matches the readline conventions your shell has used for decades. The migration cost is a stale line in a settings file.
For the smaller group who deliberately chose classic, the honest answer is that a preference which was configurable for fifteen days is now a property of the program. That is a reasonable call by Anthropic, since two flavours of word deletion is a real maintenance cost for a niche split. It is worth knowing it happened, rather than spending an evening looking for the setting that turns it back.
Written by
Sofia NievesSofia works on agent evaluation and reliability. She writes about measuring LLM systems before and after they reach production.
Frequently asked questions
Why does keybindingFlavor no longer do anything in Claude Code?
As of Claude Code v2.1.261, the readline-style word-editing behaviour the setting used to gate became the only behaviour. The changelog entry reads: 'Changed the prompt's word-editing keys to match Bash: Ctrl+W deletes back to whitespace, Alt+F and Alt+D stop at word end, punctuation separates words; keybindingFlavor no longer has any effect.' Anthropic's interactive mode reference states the same thing and calls the setting deprecated. Nothing is broken and the key raises no error.
Should I remove keybindingFlavor from my settings file?
You do not have to. An inert key is not a validation error and Claude Code will not complain about it. Remove it if you want a settings file that is honest about what it controls, since a future reader will otherwise assume it still does something.
How do I get the old classic Ctrl+W behaviour back?
Not through Claude Code. Anthropic's interactive mode reference says these shortcuts cannot be remapped in the keybindings configuration file because it has no actions for them, and counting the documented action names in the keybindings reference gives 115 actions with no word-deletion or word-movement action among them. The remaining option is remapping at the terminal emulator level, before Claude Code sees the key sequence, which is outside anything Anthropic documents.
What is the difference between Ctrl+W and Alt+D in Claude Code now?
They use different definitions of a word. Alt+B, Alt+F, Alt+D, Option+Delete and Ctrl+Backspace treat a word as a run of letters and digits, so punctuation such as underscore, full stop and forward slash acts as a boundary. Ctrl+W ignores punctuation and deletes back to the previous whitespace. On the path src/utils/foo.ts, Alt+B needs four presses to reach the start while one Ctrl+W removes the whole path.
My Alt shortcuts do nothing on macOS. Is that this change?
Probably not. Alt and Option shortcuts including Alt+B, Alt+F, Alt+D, Alt+Y and Alt+P require configuring Option as Meta in your terminal. Ctrl+W needs no such setup because it is a control character, so a session where Ctrl+W works and every Alt binding does nothing points at terminal configuration rather than at Claude Code.
When did keybindingFlavor exist?
It was added in Claude Code 2.1.238, published to npm at 2026-08-20T18:01:54.712Z, extended to the Alt word keys in 2.1.239 at 2026-08-21T17:18:54.506Z, and made inert in 2.1.261 at 2026-09-04T17:49:34.927Z. That is 14 days and 23 hours from introduction to deprecation, just under a fortnight and a half.
Related tutorials
blockReadsOutsideWorkingDirectories: why setting it to false does nothing (2026)
permissions.blockReadsOutsideWorkingDirectories blocks reads outside your working directories in every permission mode, including bypassPermissions. Writing false does not turn it off, because the key is a logical OR across all settings sources. Plus the 53-hour macOS defect window, dated from the npm registry.
TodoWrite No Longer Available: Claude Code's 2.1.233 Tool Gate (2026)
"TodoWrite no longer available" is not a bug. Claude Code v2.1.233 drops the five task-tracking tools on Sonnet 5 and newer unless you opt in. The gate follows the session, not the model, and the SDK opt-in line behaves differently in TypeScript and Python (2026).
Claude Code Memory: CLAUDE.md vs Auto Memory, and What Actually Loads (2026)
Claude Code has two memory systems and only one of them is capped. A precise 2026 walkthrough of CLAUDE.md load order, the auto memory directory, the 200-line-or-25KB index limit, and a runnable linter that measures your MEMORY.md the way Claude Code measures it.