/terminal-setup error message contradicts itself regarding Windows Terminal support

Resolved 💬 35 comments Opened Sep 26, 2025 by philcarbone Closed May 5, 2026

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?

The /terminal-setup command displays contradictory information about Windows Terminal support.

The error message states: "Terminal setup cannot be run from windows-terminal"

But then immediately instructs: "Run /terminal-setup directly in one of these terminals: Windows: Windows Terminal"

This creates confusion about whether Windows Terminal is actually supported for this feature.

What Should Happen?

The error message should be consistent and provide clear, accurate guidance:

Either:

  1. Remove "Windows Terminal" from the supported terminals list if it's not actually supported, OR
  2. Fix the detection logic to properly support Windows Terminal

The error message should not contradict itself by both rejecting and recommending the same terminal.

Error Messages/Logs

Steps to Reproduce

  1. Open Windows Terminal
  2. Run the /terminal-setup command in Claude Code
  3. Observe the contradictory error message

Expected vs Actual:

  • The error says Windows Terminal is NOT supported: "cannot be run from windows-terminal"
  • But then lists Windows Terminal as supported: "Windows: Windows Terminal"

Environment:

  • Platform: Windows
  • Terminal: Windows Terminal
  • This appears to be an error message consistency issue rather than a functional bug

Claude Model

None

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

Latest (this is an error message consistency issue, not version-specific)

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

_No response_

View original on GitHub ↗

35 Comments

philcarbone · 9 months ago

I used CC to submit this with Playwright ;)

rcocks-hl · 9 months ago

Does anyone know if there is a workaround so we can get shift+enter working in windows terminal?

Update: @IKnewOne provided this workaround downthread: https://github.com/anthropics/claude-code/issues/8208#issuecomment-3578237605

amchase · 8 months ago

If it helps at all I see this issue in Claude Code 2.0.24 running the most recent versions of both Windows Terminal (1.23.12811.0) and Windows Terminal Preview (1.24.2682.0)

karstennilsen · 8 months ago

I tried also with an older version Microsoft.WindowsTerminal_1.23.12371.0. Same problem

Derjyn · 8 months ago

Having this issue with the following environment:

Windows Terminal Preview 1.24.2682.0
PowerShell 7.6.0-preview.5

While this seems like a simple QoL issue, my Shift+Enter muscle memory is ruining chat sessions, or simple mistypes when trying to utilize the \ workaround. Having a fix for this would be a very welcome improvement!

rcocks-hl · 8 months ago
Having this issue with the following environment: `` Windows Terminal Preview 1.24.2682.0 PowerShell 7.6.0-preview.5 ` While this seems like a simple QoL issue, my Shift+Enter muscle memory is ruining chat sessions, or simple mistypes when trying to utilize the \` workaround. Having a fix for this would be a very welcome improvement!

After spending a week off using claude, I now have the opposite problem, I keep hitting \ + enter, and accidentally sending my co-workers half-finished thoughts on slack!

zeynalnia · 8 months ago

I'm experiencing this same issue:

  • OS: Windows 10.0.26200 (Windows 11)
  • Terminal: Windows Terminal (PowerShell 7.5.4)
  • Claude Code: Latest version
  • Environment variables confirm WT_SESSION is present
Mecrano · 8 months ago

PowerShell 7.5.4 + Windows Terminal app + Windows 11 also happen

revoconner · 8 months ago

Same here!

Lesani · 7 months ago

same here with
WT 1.23.12811.0
CC 2.0.50 (Claude Code)

Gosuj · 7 months ago
Does anyone know if there is a workaround so we can get shift+enter working in windows terminal?

ask claude for the json command & edit your settings.json file in the windows terminal (ctrl + shift + ,)

jrnewton · 7 months ago

This update to Windows Terminal settings.json is working for me:

"actions":
    [
        {
            "command":
            {
                "action": "sendInput",
                "input": "\^[\r"
            },
            "id": "User.sendInput.8882FD6D"
        }
    ],
KnewOne · 7 months ago

The solution from @jrnewton didn't work for me right away; it seems like this is the result of terminal later altering his command. What worked for me was

      {
          "command": {
              "action": "sendInput",
              "input": "\n"
          },
          "keys": "shift+enter"
      },

After saving json and restarting the terminal, the values changed to the id version ( "id": "User.sendInput.DFCDAF06" ), but it kept working

jrnewton · 7 months ago

The json setting was generated by Claude Code... and pasted into settings.json by me. I don't think it was modified after the fact...

Quackzoer · 7 months ago
The solution from @jrnewton didn't work for me right away; it seems like this is the result of terminal later altering his command. What worked for me was `` { "command": { "action": "sendInput", "input": "\n" }, "keys": "shift+enter" }, `` After saving json and restarting the terminal, the values changed to the id version ( "id": "User.sendInput.DFCDAF06" ), but it kept working

This worked for me, previous responses didn't

Hisham-Hussein · 7 months ago

hey guys. I had this problem also, chatted with ChatGPT 5.1, and the devil solved it :)

I use vscode with WSL (so the vscode client is on windows 11, and it connects to vscode server on WSL). The bug is from vscode actually. Here's the part of the chat that solved it:

====chatgpt response====

Yeah, this one’s not on you. It’s a VS Code + WSL mess.

Right now:

  • showkey -a shows only ^M 13 0x0d for Shift+Enter → VS Code is not sending the ESC (\^[) that your keybindings.json claims.
  • Your keybindings.json at /home/hisham/.config/Code/User/keybindings.json has the Claude binding.
  • The Keyboard Shortcuts UI shows no Shift+Enter binding.

That means one thing:

You edited the wrong keybindings file. VS Code is using the Windows host keybindings, not the WSL one Claude touched.

Claude’s /terminal-setup script is dumb here: it writes to ~/.config/Code/User/keybindings.json inside WSL, but VS Code (running on Windows) reads C:\Users\Hisham\AppData\Roaming\Code\User\keybindings.json. So the binding never actually applies.

---

Fix: put the binding in the real VS Code keybindings file

  1. In the SAME VS Code window, press:

``text
Ctrl + Shift + P
``

  1. Type:

“Open Keyboard Shortcuts (JSON)”
and hit Enter.

This opens the actual keybindings file VS Code uses on Windows, something like:

``
C:\Users\Hisham\AppData\Roaming\Code\User\keybindings.json
``

  1. Make its contents look like this (if it’s empty, make it an array with one object):

``json
[
{
"key": "shift+enter",
"command": "workbench.action.terminal.sendSequence",
"args": {
"text": "\^[\r"
},
"when": "terminalFocus"
}
]
``

If there are already other bindings, just add this object inside the array, separated by commas.

  1. Save the file.
  1. Now open the Keyboard Shortcuts UI (Ctrl+K Ctrl+S), search for shift+enter and you should see:
  • Command: workbench.action.terminal.sendSequence
  • When: terminalFocus

If you don’t see it there, you’re still editing the wrong file.

---

Verify the binding actually works

In the WSL terminal in VS Code (no Claude running), run:

showkey -a

Press Shift+Enter.

You should now see:

^[     27  0033 0x1b
^M     13  0015 0x0d

If you see both 27 and 13 → VS Code is sending ESC + Enter correctly.
Before, you only had the 13 line.

---

Use it with Claude

Now:

claude

At the You: prompt:

  • Type some text.
  • Press Shift+Enter → should give you a new line within the same prompt (depending on how 2.0.57 handles it).
  • Press Enter → sends.

If Shift+Enter is still just “send”, that’s on Claude Code’s current behavior, not VS Code. But your keybinding and terminal wiring will finally be correct.

---

Devil’s advocate: this whole thing is brittle. Claude’s /terminal-setup doesn’t understand WSL and writes to the wrong config path. If Anthropic doesn’t fix that, you’ll have to remember that any “automatic” keybinding changes it does inside WSL are basically no-ops and you need to mirror them manually into the Windows-side keybindings.json.

chrisboulet · 7 months ago

Workaround for Windows Terminal users:

Add this to your Windows Terminal settings.json:

"actions": [
{
"command": {
"action": "sendInput",
"input": "\^[\r"
},
"keys": "shift+enter"
}
]

Steps:

  1. Open Windows Terminal
  2. Press Ctrl+, → Click the gear icon (bottom left) → "Open JSON file"
  3. Find the "actions" array and add the config above
  4. Save and restart Windows Terminal

Shift+Enter now works for multi-line prompts in Claude Code.

github-actions[bot] · 6 months ago

This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.

remal · 6 months ago

it's still relevant

jbriley · 6 months ago

Seems this is still a bug.

ldaroczi-grepton · 5 months ago

This setup works for me on Windows 11, Windows terminal 1.23.13503.0 running PowerShell 7.5.4.

Open Visual Studio Code settings.json:

  • In the actions array add this as the last entry:
        {
            "command": {
                "action": "sendInput",
                "input": "\^[\r"
            },
            "id": "Claude.shiftEnter"
        }
  • In the keybindings array add this as the last entry:
        {
            "id": "Claude.shiftEnter",
            "keys": "shift+enter"
        }
lifeinchords · 5 months ago

@chrisboulet Your fix worked, thank you!

  • CC v2.1.29
  • Windows Terminal (with both WindowsPowerShell and Command Prompt working)
  • Win11
mjbates7 · 5 months ago

Still an issue on

CC v2.1.31
Windows Terminal
Win11

CaptFaraday · 4 months ago

Still an issue on:

  • CC v2.1.59
  • Windows Terminal
  • Windows 11 (10.0.26200)

Can confirm the \n workaround from @KnewOne works. Adding this to Windows Terminal settings.json:

{
    "command": {
        "action": "sendInput",
        "input": "\n"
    },
    "keys": "shift+enter"
}

After saving, Windows Terminal auto-converts it to the id format (User.sendInput.DFCDAF06), but Shift+Enter continues to work correctly in Claude Code.

The /terminal-setup command still rejects Windows Terminal despite listing it as a supported terminal. The contradictory error message remains unchanged.

thygrrr · 4 months ago

Still an issue on Windows 11 Pro using Windows Terminal ("windows-terminal" according to Claude, I think this is likely a string matching problem)

I'd also like to invert the behaviour - submit command on shift-enter, and just keep typing, indenting, etc. on plain enter...

markshapiro-cv · 4 months ago

Yet another of the many issues with running Claude Code CLI on Windows. Any chance some work can be done at cleaning these things up?

CreepyGnome · 4 months ago

I am seeing the same contradiction mentioned in the OP: the CLI claims Windows Terminal is not supported while simultaneously recommending it.

More importantly, this points to a larger User Experience issue regarding cross platform parity. Currently, the multi line shortcut is inconsistent ($Shift + Enter$ on macOS vs $Ctrl + Enter$ on Windows). For developers working in hybrid environments, this shortcut fragmentation is a constant source of friction.

Why this matters:

  • Muscle Memory: Switching between Mac and Windows leads to several false starts every time I switch machines because the inputs are not unified.
  • Expectation: Users expect a CLI tool to behave identically across supported shells.
  • Accessibility: If it works in the VS Code terminal on Windows, there is no technical reason it should not work in the native Windows Terminal.

It would be great to see /terminal-setup fixed for Windows Terminal and a move toward $Shift + Enter$ as the unified newline standard across Mac, Windows, and Linux.

JasonKeirstead · 4 months ago

I really wish this could just be fixed.

Seems like the fix is widely known, yet no one does it.

sboisvert · 4 months ago

Windows Terminal 1.25 now supports KITTY which should make this fixable: https://github.com/microsoft/terminal/pull/19817 (Not the error message itself, but the fact that it wasn't supported)
https://github.com/microsoft/terminal/releases/tag/v1.25.622.0

ElSensei503 · 3 months ago

Root cause and workaround

Root cause

The terminal detection elsewhere in Claude Code correctly uses $WT_SESSION to identify Windows Terminal. However, /terminal-setup appears to rely on $TERM_PROGRAM, which Windows Terminal does not set:

$ echo "$TERM_PROGRAM"
                          # empty
$ echo "$WT_SESSION"
b9ebf46d-1ad8-4234-83a4-4f54d44a99e8   # present

Because $TERM_PROGRAM is empty, the command fails to identify the terminal and reports it as unsupported — even though $WT_SESSION confirms it is Windows Terminal.

Suggested fix

Have /terminal-setup check $WT_SESSION (in addition to or before $TERM_PROGRAM) when identifying Windows Terminal, consistent with the detection logic used elsewhere in the codebase.

Manual workaround (confirmed working)

Add this to the actions array in Windows Terminal's settings.json (Ctrl+Shift+, to open):

{
    "command": {
        "action": "sendInput",
        "input": "\^[[13;2u"
    },
    "id": "User.sendInput.shiftEnter",
    "keys": "shift+enter"
}

Windows Terminal auto-normalises this into its newer split schema: the command definition stays in actions and the key assignment moves to keybindings.

Environment: Windows 11 Enterprise ARM64, Windows Terminal, Claude Code v2.1.86.

(Closing #41069 as duplicate of this issue.)

yurukusa · 3 months ago

The /terminal-setup command's error message is confusing — it says Windows Terminal isn't supported while simultaneously suggesting you use it.
What's actually happening: /terminal-setup can't auto-configure Windows Terminal because its settings are in a JSON file that requires different handling than Unix terminal configs. But you can configure it manually:
Manual setup for Windows Terminal:

  1. Open Windows Terminal Settings (Ctrl+, → "Open JSON file" at the bottom left)
  2. Add keybindings for Claude Code shortcuts:
{
  "actions": [
    {
      "command": { "action": "sendInput", "input": "\^[[13;2u" },
      "keys": "shift+enter"
    }
  ]
}
  1. Ensure your profile uses a proper font:
{
  "profiles": {
    "defaults": {
      "font": {
        "face": "CaskaydiaCove Nerd Font"
      }
    }
  }
}

For optimal Claude Code experience in Windows Terminal:

{
  "profiles": {
    "defaults": {
      "font": {
        "face": "CaskaydiaCove Nerd Font",
        "size": 12
      },
      "padding": "8",
      "scrollbarState": "hidden",
      "colorScheme": "One Half Dark"
    }
  }
}

The Nerd Font is recommended for proper icon rendering in Claude Code's TUI.

MichaelCharles · 3 months ago

Can confirm that @ElSensei503 's workaround works for me.

And can confirm that I am currently experiencing this weird bug where Claude Code simultaneously tells me "windows-terminal" cannot be used but that instead I should use "Windows Terminal."

❯ /terminal-setup
  ⎿  Terminal setup cannot be run from windows-terminal.

     This command configures a convenient Shift+Enter shortcut for multi-line prompts.
     Note: You can already use backslash (\) + return to add newlines.

     To set up the shortcut (optional):
     1. Exit tmux/screen temporarily
     2. Run /terminal-setup directly in one of these terminals:
     • Windows: Windows Terminal
     • IDE: VSCode, Cursor, Windsurf, Zed
     • Other: Alacritty
     3. Return to tmux/screen - settings will persist

     Note: iTerm2, WezTerm, Ghostty, Kitty, and Warp support Shift+Enter natively.
KristiyanHristov04 · 3 months ago

I can also confirm @ElSensei503 's approach is fixing the issue.

jgwinner · 2 months ago

Claude Code itself still gives incorrect information. It says:

  1. In Windows Terminal: Ctrl+, to open Settings, then click "Open JSON file" (bottom-left)
  2. Find the "actions" array and add:

  {
      "command": {
          "action": "sendInput",
          "input": "\\\r"
      },
      "keys": "shift+enter"
  }

  That gives you Shift+Enter for multi-line prompts in Claude Code. The bug itself needs to be fixed
  upstream in the Claude Code CLI — worth filing the issue so the Windows detection logic gets corrected.

This is incorrect. You have to edit the .json file manually, and it's not in an obvious location.

❯ Got it. However, I don't see "Send Input" in the "Settings->Actions->Add New" setting, and nowhere to
  edit the .json file

● The sendInput action isn't exposed in the GUI — you have to edit the JSON directly. In the Settings panel,
   look for "Open JSON file" — it's a small link at the bottom-left corner of the Settings page.

  If you can't find it, open the file directly in File Explorer:

  1. Press Win+R
  2. Paste: %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\
  3. Open settings.json with Notepad or VS Code

❯ then why did you tell me to enter ctrl+, ?? That's incorrect.

● You're right, I'm sorry. I told you Ctrl+, to open Settings, then gave you GUI instructions that don't
  work for this, then fell back to "edit the JSON directly" — I should have just said "edit the JSON
  directly" from the start.

Claude confirms the lack of it's own answer:

● The bug has been open since September 26, 2025 — nearly 7 months. It's confirmed, labeled bug + platform:windows, and
  has no assignee. Your frustration is completely valid.

  I can't fix it myself since it's in the Claude Code CLI codebase, not your local files. The only thing I can suggest
  is adding a comment on issue #8208 to bump it, or thumbs-upping it to signal priority. I'm sorry you had to deal with
  this.

My setup: Take Command (TCC) from JPSoft. Windows power shell or CMD in a pinch. I use Visual Studio.

So what I did, was open Visual Studio, File/Open %LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\, then paste in the mentioned text at the top:

  {
      "command": {
          "action": "sendInput",
          "input": "\\\r"
      },
      "keys": "shift+enter"
  }

Visual Studio will look at the schema, and change the pasted text to:

         {
              "command":
              {
                  "action": "sendInput",
                  "input": "\\\r"
              },
              "id": "User.sendInput.945C32C5"
          },

and add a line further down for:

    "keybindings": 
    [
        {
            "id": "User.sendInput.945C32C5",
            "keys": "shift+enter"
        },

I usually use TCMD (Take Command from JPSoft), so I don't screw with Windows Terminal much, but Claude shouldn't paste incorrect information. Even better, installing claude code should make the change or suggest it.

Clearly, WIndows is a redheaded stepchild, and it's frustrating. Do I have to mention market share?

TheBestPessimist · 1 month ago

@sosukesuzuki this is not fixed. Please reopen
I just installed and tried claude code for the first time, and shift enter does not work.. the message after /terminal-setup is not useful either, and badly indented:

<img width="1428" height="396" alt="Image" src="https://github.com/user-attachments/assets/3492f981-1b3f-40bf-88a7-e6478cdd3ddf" />