Claude Code Interactive Mode: Shortcuts and Prompt Tricks

The message is queued rather than dropped or treated as an interrupt. A plain message queued during tool calls reaches Claude as soon as those calls finish, inside the same turn. Commands and shell commands are held until the turn ends and then run one at a time. Press escape if you want to interrupt instead.
It runs the rest of the line as a shell command without going through Claude. The command and its output are added to the conversation, and Claude responds to that output automatically, so running your tests gets you an explanation of the failures without a second prompt. Tab completes from your previous shell-mode commands in the project.
A control sequence works in any terminal without configuration, and a trailing backslash followed by Enter works everywhere too. Shift and Enter is native in iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal and Windows Terminal. On macOS, the Option and Enter combination works once you configure Option as Meta.
It asks a side question that never enters the conversation history. It answers only from what is already in context — your messages, Claude's replies and the tool results gathered so far — and has no tool access, so it cannot read files or run commands. It also works while Claude is still processing a response.
Set the keybinding flavour to readline in your settings file. The default treats a path separator as part of a word, so deleting the previous word removes only the last path segment. Under readline, punctuation such as underscore, dot and slash separates words, so one keystroke removes a whole file path.

Key Takeaway
The Claude Code prompt is not just a text box. Five leading characters change what it does, a message typed mid-turn is queued rather than dropped, a side question can be asked without touching the conversation history, and about ten key combinations cover almost everything else you will reach for.
For two months I interrupted Claude every time I thought of something, because I assumed pressing Enter mid-turn would either be ignored or cut the work short. It queues. The message goes in as soon as the current tool calls finish, the turn keeps its momentum, and the thing I had to say lands anyway. That one fact changed how I work more than any setting.
The interactive surface is full of small things like that, and almost none of them announce themselves. This post covers the characters that change what the prompt does, why shell mode is worth more than a keystroke saved, queuing against interrupting, side questions that stay out of the history, the shortcuts worth memorising, one setting that makes editing behave like your shell, and what happens when you hit a usage limit.
Leading characters switch the input into different modes, and only two of them are widely known. The command slash and the file-path at-sign get used constantly; shell mode, emoji shortcodes, and the help panel on an empty input rarely do — which is a shame, because the first of those is the most useful thing in the list.
/ a command or skill
! shell mode — run it yourself, put the output in context
@ file path autocomplete
: emoji shortcode (:hea -> suggestions, :heart: -> inserts)
? on an EMPTY input, toggles the shortcut help panel
# Shell mode is the one people underuse.
! npm test
! git status
# - the command and its output join the conversation
# - Claude responds to the output automatically, so
# "! npm test" gets you an explanation of the failures
# without a second prompt
# - Tab completes from your previous ! commands in this project
# - Ctrl+B backgrounds a long one, same as a normal Bash call
# - Esc, Backspace or Ctrl+U on an empty prompt exitsRunning a command with the bang prefix does not just spare you a second terminal. The command and its output join the conversation, and Claude responds to that output on its own — so running your test suite gets you an explanation of the failures without a second prompt. That is a genuinely different workflow from switching windows, running the tests, and pasting the output back.
It also behaves like a shell in the ways that matter. Tab completes from your previous commands in this project, a token containing a slash opens file-path completion, and a long-running command can be backgrounded with the same key as any other. You leave the mode with escape, backspace, or a clearing keystroke on an empty prompt.
Reverse search is the shortcut most worth building a habit around. It scans your full prompt history newest first with duplicates collapsed, and — unlike the up arrow, which recalls prompts for the current project — the inline search reaches prompts from every project. Tab or escape accepts the match for editing; Enter accepts and runs it immediately.
Type while Claude is working and press Enter: the message is queued, listed above the input box, and delivered rather than discarded. What differs is when. This is worth knowing precisely, because the difference between a message and a command is the difference between landing inside the current turn and waiting for the next one.
When a queued entry actually reaches Claude:
| What you queued | When it is sent |
|---|---|
| A plain message, during tool calls | As soon as those tool calls finish, inside the same turn |
| A command or a shell command | Held until the turn ends, then run one at a time |
| Anything, when you press escape | The turn is interrupted and what you queued is sent right away |
| Anything, when you change your mind | Press up from the first line of the input box to take it back into the prompt, one entry per line |
The side-question command answers from what is already in the conversation — your messages, Claude's replies, the tool results it has gathered — and nothing it produces enters the history. It is the exact inverse of a subagent: full context, no tools, where a subagent has tools and no context. Three properties make it more useful than it sounds:
Ten or so cover nearly everything. The transcript viewer and the task list are the two people most often do not know exist, and the stash key is the one you will wish you had known the first time a permission dialog appeared over a half-written prompt.
Ctrl+O toggle the transcript viewer
Ctrl+T toggle Claude's task checklist (shows five at a time)
Ctrl+B background the running task (TWICE inside tmux)
Ctrl+S stash the prompt you were writing, or restore it
Ctrl+R reverse-search your prompt history
Ctrl+G open the prompt in your editor (or Ctrl+X Ctrl+E)
Ctrl+L redraw Ctrl+Z suspend Ctrl+D exit
Esc interrupt Claude, or close a dialog
Esc Esc clear the draft, or rewind
Ctrl+X Ctrl+K stop ALL running background subagents
Shift+Tab cycle permission modes
Option/Alt+P switch model
Option/Alt+T toggle extended thinking
Option/Alt+O toggle fast mode
# Multiline, in order of how well they travel:
Ctrl+J works in any terminal, no configuration
backslash+Enter works everywhere
Shift+Enter native in iTerm2, WezTerm, Ghostty, Kitty, Warp,
Apple Terminal, Windows TerminalTwo footnotes on backgrounding. Inside tmux the background key has to be pressed twice, because tmux takes the first press as its own prefix. And background tasks are not immortal: they are terminated if output passes 5 GB, cleaned up when Claude Code exits, and on macOS and Linux they can be killed when the operating system signals memory pressure, provided the session has been idle for at least half an hour.
One setting fixes the most irritating difference between the prompt and a normal shell. By default, deleting the previous word stops at a path separator; the readline flavour deletes back to whitespace the way bash does. If you have ever pressed the delete-word key four times to remove one file path, this is the fix.
// ~/.claude/settings.json
{ "keybindingFlavor": "readline" }
// Default is "classic". Type this in the prompt and press Ctrl+W:
// fix the bug in src/utils/foo.ts
//
// classic removes foo.ts
// readline removes src/utils/foo.ts
//
// Under readline a word is letters and digits, so _ . and /
// separate words — which is what your shell already does.
//
// This is NOT the keybindings.json file: word-editing commands
// are not actions there, so they cannot be remapped that way.On a claude.ai plan, hitting a limit mid-task does not end the session. A line at the bottom shows when work will continue, Claude Code waits, and at the reset it sends a prompt to pick the task back up. Escape at an empty prompt cancels the wait, and the options command lets you choose the behaviour deliberately. It is off in background and non-interactive runs, and irrelevant on metered billing where there is no reset to wait for.
Prompt suggestions are worth knowing about because they are off by default in interactive mode and the toggle is sometimes hidden. When they are on, Claude Code proposes your next prompt after a response; tab or the right arrow places it in the input. They reuse the conversation's prompt cache, so the extra cost is small — but they are skipped on a cold cache, in plan mode, and when you are near your usage limit.
Learn queueing first, because it removes the choice between interrupting and forgetting. Then shell mode, because getting an explanation of a failing test without pasting anything is the single biggest time saving in this list. Everything else you can pick up as you meet it — press the question mark on an empty prompt and the panel will tell you what is available in the version you are actually running.
Sources & further reading