Option + Arrow keys no longer work in the integrated terminal; instead, it prints “A” or “B” or “C” or “D” for up, down, left, right arrows, respectively, in ZSH. In bash, it’s “;3A” “;3B” “;3C” “;3D”.
No changes were made on my side, I just updated the IDE.
In the settings, there are existing bindings like “cursorWordLeft” when “textInputFocus” for each key
Hey, this is a known regression in 3.3.x. In one of the recent updates, the default Kitty keyboard protocol setting changed in the terminal. Because of that, Option+Arrow and Option+Delete send CSI u instead of ESC b and ESC f, which zsh, bash, and readline expect for word-wise navigation.
After that, Option+Left and Option+Right should move the cursor by words again. The issue is being tracked, but I can’t share an exact ETA for a fix yet.
In the cursor integrated terminal when using the shortcut “option + arrow(left, right)” instead of jumping from one word to the next it writes the letters “D” and “C”, “option + arrow(up, down)” write “A” and “B”.
Similar happens when “shift + arrow”.
This only happens in the cursor terminal, the shortcut works as expected in the code area, and all other editors like vscode or regular terminal. Confirmed the same behaviour with 3 different colleagues.
Steps to Reproduce
Open cursor, open terminal inside of cursor, type in some words, try to jump from word to word using “option + arrow(left, right)”
Expected Behavior
The shortcut “option + arrow(left, right)” should jump from one word to the next depending on the direction.
enableKittyKeyboardProtocol does not resolve the issue for me. Still the same behaviour in bash and zsh. I did try creating a new terminal as well as restarting the IDE itself
I tried setting "terminal.integrated.enableKittyKeyboardProtocol": false
in my settings.json , reloaded my window, with no luck - the issue still happens
Update the keyboard shortcuts json via cmd+shift+p or ctrl+shift+p search for the keyboard shortcut json one and then open it. after that add below array objects in available array.
Hey, thanks for letting us know the setting didn’t help. It looks like for some users enableKittyKeyboardProtocol: false doesn’t reset even after Reload Window.
The most reliable workaround for now is to add this to keybindings.jsonCmd+Shift+P > Preferences: Open Keyboard Shortcuts (JSON):
This sends ESC f and ESC b straight to the shell, which is what zsh, bash, and readline expect for word-wise navigation, and it bypasses kitty keyboard. It works in both bash and zsh, with no need to edit .zshrc.
Thanks to @Rutvik_Nabhoya for this option and @fjvalente for an alternative using bindkey. We’re still tracking the issue, but I can’t share an ETA for a fix yet. We’ll post an update here once we have one.
not sure how this started happening but whenever i use the integrated terminal and try to jump to the previous word using alt/option + left arrow, the character ‘D’ is written instead. when i use macos terminal.app, the keyboard combination works as expected (jumps to previous word). here’s a demo:
here are the global keyboard bindings (keybindings.json):
Can we please revert this back to the original/standard behaviour? The Option+Left/Right Arrows are jumping across words in all MacOS applications. Very annoying that this stopped working CursorAi Terminal window. It affects both integrated zsh and bash. Also, it’s fine in the source code editor window.
Setting "terminal.integrated.enableKittyKeyboardProtocol": false doesn’t get applied for some users even after Reload Window, so keybindings are the more reliable option. Once there’s an update on the fix, I’ll reply in the thread.
I’m seeing the same issue as well, even after trying several approaches such as enableKittyKeyboardProtocol .
Version: 3.4.20
VSCode Version: 1.105.1
Commit: 0cf8b06883f54e26bb4f0fb8647c9500ccb43310
Date: 2026-05-15T02:26:10.351Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 24.6.0
Hey, glad bindkey worked. It’s a solid option for zsh, but if a user is on bash or wants one solution for both shells, they should use keybindings.json from post #16Option + Arrow keys no longer work in the integrated terminal - #16 by deanrie. It sends ESC f and ESC b straight to the shell, so there’s no need to touch .zshrc.
We’re still tracking the issue, and I can’t share an ETA for a fix yet.
Hey everyone,
The Option+Arrow keys not working in the integrated terminal was fixed in a recent Cursor update. Updating to the latest version should resolve this — let me know if you still hit it.