[BUG] New /terminal-setup in kitty broken
Resolved 💬 3 comments Opened Dec 24, 2025 by socketbox Closed Dec 24, 2025
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Kitty terminal-setup breaks with a trace:
[2025-12-23 23:10:12]» claude -d
╭─── Claude Code v2.0.76 ────────────────────────────────────────────────────────────────────────────────╮
│ │ Tips for getting started │
│ Welcome back! │ Run /init to create a CLAUDE.md file with instructions for Claude │
│ │ ───────────────────────────────────────────────────────────────── │
│ * ▐▛███▜▌ * │ Recent activity │
│ * ▝▜█████▛▘ * │ No recent activity │
│ * ▘▘ ▝▝ * │ │
│ │ │
│ Sonnet 4.5 · API Usage Billing │ │
│ ~/.claude/debug │ │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Debug mode enabled
Logging to: /home/chb/.claude/debug/ccd39cb6-8b60-4a9b-bf9d-2755a1bddf2c.txt
/model to try Opus 4.5. Note: you may need to request access from your cloud provider
> /model
⎿ Set model to Default (global.anthropic.claude-sonnet-4-5-20250929-v1:0)
> /doctor
⎿ Claude Code diagnostics dismissed
> /permissions
⎿ Permissions dialog dismissed
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
> /term
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
/terminal-setup Install Shift+Enter key binding for newlines
/permissions Manage allow & deny tool permission rules
/todos List current todo items
363 | <key>Modifiers</key>
364 | <integer>131072</integer>
365 | </dict>`]);if(L!==0)throw Error("Failed to install iTerm2 Shift+Enter key binding");return await WL("defaults",["export","com.googlecode.iterm2",$]),Ys$(),`${$I("success",H)("Installed iTerm2 Shift+Enter key binding")}${eI.EOL}${B$.dim("See iTerm2 \u2192 Settings \u2192 Keys")}${eI.EOL}`}catch(A){s(A instanceof Error?A:Error(String(A)));let L=S$().iterm2BackupPath,I=!1;if(L&&zH().existsSync(L))try{await WL("defaults",["import","com.googlecode.iterm2",L]),I=!0,Ys$()}catch(D){s(Error(`Failed to restore from backup: ${String(D)}`))}throw Error(`Failed to install iTerm2 Shift+Enter key binding. ${I?"Your settings have been restored from backup.":L&&zH().existsSync(L)?`Restoring from backup failed, try manually with: defaults import com.googlecode.iterm2 ${L}`:"No backup was available to restore from."}`)}}function Ts$(H="VSCode",$){let A=H==="VSCode"?"Code":H,L=fW.join(eI.homedir(),eI.platform()==="win32"?fW.join("AppData","Roaming",A,"User"):eI.platform()==="darwin"?fW.join("Library","Application Support", | ... truncated
366 | `))f+=`
367 | `;return f+=`map shift+enter send_text all \\e\\r
368 | `,zH().writeFileSync(I,f,{encoding:"utf-8",flush:!1}),`${$I("success",H)("Installed Kitty Shift+Enter key binding")}${eI.EOL}${$I("success",H)("You may need to restart Kitty for changes to take effect")}${eI.EOL}${B$.dim(`See ${I}`)}${eI.EOL}`}catch(B){throw s(B instanceof Error?B:Error(String(B))),Error("Failed to install Kitty Shift+Enter key binding")}}async function $v0(H){let A=[],L=process.env.XDG_CONFIG_HOME;if(L)A.push(fW.join(L,"alacritty","alacritty.toml"));else A.push(fW.join(eI.homedir(),".config","alacritty","alacritty.toml"));if(eI.platform()==="win32"){let B=process.env.APPDATA;if(B)A.push(fW.join(B,"alacritty","alacritty.toml"))}let I=null,D=!1;for(let B of A)if(zH().existsSync(B)){I=B,D=!0;break}if(!I)I=A[0]??null,D=!1;if(!I)throw Error("No valid config path found for Alacritty");try{let B="";if(D){if(B=zH().readFileSync(I,{encoding:"utf-8"}),B.includes('mods = "Shift"')&&B.includes('key = "Return"'))return`${$I("warning",H)("Found existing Alacritty Shift+Enter key binding. Remove it to cont | ... truncated
error: Failed to install Kitty Shift+Enter key binding
at Hv0 (/$bunfs/root/claude:368:306)
at Hv0 (/$bunfs/root/claude:365:4807)
at Ns$ (/$bunfs/root/claude:332:91935)
> /terminal-setup
· Reticulating… (esc to interrupt)
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
/terminal-setup Install Shift+Enter key binding for newlines
/permissions Manage allow & deny tool permission rules
/todos List current todo items
Bun v1.3.5 (Linux x64 baseline)
What Should Happen?
Given that recent (2.0.74) Release Notes indicate that kitty is supported for terminal support, I expect said command to actually complete successfully and allow me to use Shift+Enter in a kitty-based Claude Code session.
Error Messages/Logs
This is the portion of the debug log after running `/doctor` as shown above:
110 │ 2025-12-24T04:10:36.441Z [DEBUG] UserCommandMessage rendering: "doctor" (args: "none")
111 │ 2025-12-24T04:10:36.441Z [DEBUG] isSkillFormat: false
112 │ 2025-12-24T04:10:36.462Z [DEBUG] AutoUpdaterWrapper: Installation type: native
113 │ 2025-12-24T04:10:36.467Z [DEBUG] Writing to temp file: /home/chb/.claude.json.tmp.684700.1766549436467
114 │ 2025-12-24T04:10:36.467Z [DEBUG] Preserving file permissions: 100644
115 │ 2025-12-24T04:10:36.476Z [DEBUG] [SLOW OPERATION DETECTED] fs.writeFileSync (9.0ms)
116 │ 2025-12-24T04:10:36.476Z [DEBUG] Temp file written successfully, size: 60610 bytes
117 │ 2025-12-24T04:10:36.476Z [DEBUG] Applied original permissions to temp file
118 │ 2025-12-24T04:10:36.476Z [DEBUG] Renaming /home/chb/.claude.json.tmp.684700.1766549436467 to /home/chb/.claude.json
119 │ 2025-12-24T04:10:36.477Z [DEBUG] File /home/chb/.claude.json written atomically
120 │ 2025-12-24T04:10:36.492Z [DEBUG] Writing to temp file: /home/chb/.claude.json.tmp.684700.1766549436492
121 │ 2025-12-24T04:10:36.492Z [DEBUG] Preserving file permissions: 100644
122 │ 2025-12-24T04:10:36.495Z [DEBUG] Temp file written successfully, size: 60610 bytes
123 │ 2025-12-24T04:10:36.495Z [DEBUG] Applied original permissions to temp file
124 │ 2025-12-24T04:10:36.495Z [DEBUG] Renaming /home/chb/.claude.json.tmp.684700.1766549436492 to /home/chb/.claude.json
125 │ 2025-12-24T04:10:36.496Z [DEBUG] File /home/chb/.claude.json written atomically
126 │ 2025-12-24T04:10:36.546Z [DEBUG] Checking for native installer update to version 2.0.76
127 │ 2025-12-24T04:10:36.547Z [DEBUG] Already running version 2.0.76 - no update needed
128 │ 2025-12-24T04:10:48.571Z [DEBUG] [SLOW OPERATION DETECTED] fs.statSync (5.5ms)
129 │ 2025-12-24T04:10:53.993Z [DEBUG] UserCommandMessage rendering: "permissions" (args: "none")
130 │ 2025-12-24T04:10:53.993Z [DEBUG] isSkillFormat: false
131 │ 2025-12-24T04:10:54.036Z [DEBUG] AutoUpdaterWrapper: Installation type: native
132 │ 2025-12-24T04:10:54.103Z [DEBUG] Checking for native installer update to version 2.0.76
133 │ 2025-12-24T04:10:54.103Z [DEBUG] Already running version 2.0.76 - no update needed
134 │ 2025-12-24T04:10:57.140Z [DEBUG] AutoUpdaterWrapper: Installation type: native
135 │ 2025-12-24T04:10:57.144Z [DEBUG] Writing to temp file: /home/chb/.claude.json.tmp.684700.1766549457144
136 │ 2025-12-24T04:10:57.145Z [DEBUG] Preserving file permissions: 100644
137 │ 2025-12-24T04:10:57.153Z [DEBUG] [SLOW OPERATION DETECTED] fs.writeFileSync (8.9ms)
138 │ 2025-12-24T04:10:57.154Z [DEBUG] Temp file written successfully, size: 60612 bytes
139 │ 2025-12-24T04:10:57.154Z [DEBUG] Applied original permissions to temp file
140 │ 2025-12-24T04:10:57.154Z [DEBUG] Renaming /home/chb/.claude.json.tmp.684700.1766549457144 to /home/chb/.claude.json
141 │ 2025-12-24T04:10:57.154Z [DEBUG] File /home/chb/.claude.json written atomically
It's as if nothing was actually logged w/re/to the /terminal-setup command.
Steps to Reproduce
Run kitty 0.44.0, and the attempt /terminal-setup in Claude Code 2.0.76.
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.0.76
Platform
AWS Bedrock
Operating System
Other Linux
Terminal/Shell
kitty (0.44.0)
Additional Information
> /status
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Settings: Status Config Usage (tab to cycle)
Version: 2.0.76
Session ID: 746f81b9-8fd2-4ee0-a2ba-b2948eb9a2fa
cwd: /home/chb/.claude/debug
API provider: AWS Bedrock
AWS region: us-east-1
Model: Default (global.anthropic.claude-sonnet-4-5-20250929-v1:0)
Memory:
Setting sources: User settings
Esc to cancel
[2025-12-23 23:06:04]» kitty --version
kitty 0.44.0 created by Kovid Goyal
[2025-12-23 23:06:09]» echo $TERM
xterm-kitty
[2025-12-23 23:06:41]» zsh --version
zsh 5.9 (x86_64-pc-linux-gnu)This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗