The VT Code terminal UI includes an interactive mode that combines keyboard-first navigation with quick commands for agent control. This page consolidates the shortcuts, input modes, and background execution behaviors available while you are connected to a session.
Keyboard shortcuts may vary slightly by platform and terminal emulator. Press
?on an empty input line while VT Code is running to open a quick shortcut overlay.
| Shortcut | Description | Context |
|---|---|---|
Ctrl+C |
Cancel the current generation or command. Press twice to terminate the session. | Works during prompts, tool execution, and streaming replies. |
Ctrl+D |
Exit VT Code interactive mode. | Sends EOF to the shell integration. |
Ctrl+L |
Clear the terminal screen while keeping the conversation history. | Useful for refreshing when output is cluttered. |
Ctrl+T |
Toggle verbose tool output and diagnostics. | Reveals detailed tool invocation logs without affecting the TODO panel. |
Ctrl+O |
Copy last agent response as markdown to clipboard. | Available after the agent has produced at least one response. |
Alt+O |
Open or close fullscreen transcript review. | Available when VT Code is using alternate-screen rendering. |
Ctrl+A |
Move cursor to start of input line. | UNIX/readline-style editing. |
Ctrl+E |
Move cursor to end of input line (or open external editor when input is empty). | Uses tools.editor config, then VISUAL/EDITOR. Configure it with /config tools.editor. |
Ctrl+Home |
Jump to the oldest visible transcript content. | Fullscreen rendering only. |
Ctrl+End |
Jump back to the latest transcript content and resume follow mode. | Fullscreen rendering only. |
Ctrl+W |
Delete the previous word. | UNIX/readline-style editing. |
Ctrl+U |
Delete from cursor to line start. | UNIX/readline-style editing. |
Ctrl+K |
Delete from cursor to line end. | UNIX/readline-style editing. |
Alt+Left/Right |
Move cursor by word. | UNIX/readline-style navigation. |
Ctrl+R |
Reverse search the command history. | Matches previous prompts and bash commands. |
Ctrl+V (macOS/Linux) or Alt+V (Windows) |
Paste an image from the clipboard. | Works with image-enabled sessions. |
Ctrl+Z (Unix) |
Suspend VT Code to the shell; run fg to resume. |
Job-control support for terminal workflows. |
Up/Down arrows |
Navigate through command history. | Recall previous prompts or commands. |
Esc + Esc |
Open the rewind picker for checkpoint restore or summarize actions. | Idle context only (while no task/PTY is running). |
Enter |
Queue the current input. | Plain input box only. |
Tab |
Accept the visible inline suggestion, otherwise queue the current input. | Plain input box only; list and slash UIs keep their existing tab behavior. |
Ctrl+Enter |
Process now or steer now. | Idle: runs the current draft, or the newest queued message if the draft is empty. Active: steers the current turn with the current draft. |
Shift+Tab or Alt+M |
Cycle permission modes. | Switches Edit, Auto, and Plan modes. |
| Method | Shortcut | Context |
|---|---|---|
| Quick escape | \ + Enter |
Works across supported terminals. |
| macOS default | Option+Enter |
Default multiline binding on macOS terminals. |
| Native or configured | Shift+Enter |
Works natively in some terminals and is available after /terminal-setup in supported terminals. |
| Control sequence | Ctrl+J |
Inserts a line feed for multiline editing. |
| Paste mode | Paste directly | Ideal for code blocks or long transcripts. |
Tip:
Shift+Enterworks natively inGhostty,Kitty,WezTerm,iTerm2, andWarp. Run/terminal-setupin supported terminals such asVS Code,Alacritty, orZedwhen you want VT Code's guided setup flow.
| Shortcut | Description | Notes |
|---|---|---|
# at start of input |
Access custom prompts. | Opens quick picker to select and run custom prompts directly from input bar. |
/ at start of input |
Issue a slash command. | Run /help or /slash-commands in a session to list everything available. |
! at start of input |
Enter Bash mode. | Runs shell commands directly and streams their output. |
@ within input |
Open file picker. | Triggers file path autocomplete and picker to quickly reference files in your message. |
@agent-<name> within input |
Open subagent picker and insert an explicit agent mention. | Use @agent-<plugin>:<name> for plugin-provided agents. |
Alt+P / Option+P |
Generate an inline prompt suggestion. | Shows a ghost-text completion in the composer; Tab accepts it. |
When VT Code is running in alternate-screen mode, the transcript and composer use a fixed fullscreen layout similar to terminal applications such as vim or less. The input stays pinned at the bottom, mouse handling is internal to VT Code, and transcript review/search happens inside the app instead of your terminal scrollback.
| Shortcut | Description |
|---|---|
PgUp / PgDn |
Scroll the live transcript by half a page. |
Ctrl+Home |
Jump to the oldest transcript content. |
Ctrl+End |
Jump to the latest transcript content and resume auto-follow. |
| Mouse wheel | Scroll the live transcript when mouse capture is enabled. |
Press Alt+O to open the fullscreen transcript review surface. It builds a plain-text view of the full conversation, including expanded collapsed tool payloads, so search and export operate on the complete transcript rather than only the visible viewport.
| Shortcut | Description |
|---|---|
/ |
Start a case-insensitive transcript search. |
Enter |
Commit the current search and jump to the first match. |
Esc |
Cancel the active search, or close transcript review when search is idle. |
n / N |
Jump to the next or previous search match. |
j / k or Up / Down |
Scroll one line. |
Ctrl+U / Ctrl+D |
Scroll half a page. |
Ctrl+B / b |
Scroll a full page up. |
Ctrl+F / Space |
Scroll a full page down. |
g / Home |
Jump to the top. |
G / End |
Jump to the bottom. |
[ |
Hand the expanded transcript to the terminal's native scrollback until you return. |
v |
Write the expanded transcript to a temporary file and open it in your configured editor. |
q or Alt+O |
Close transcript review. |
ui.fullscreen.mouse_capture = falsekeeps fullscreen rendering but returns click-and-drag selection to the terminal. This also disables in-app wheel scrolling, click-to-expand, click-to-position, and link activation.ui.fullscreen.copy_on_select = falsedisables automatic clipboard copy after an in-app text selection. Manual copy shortcuts still work.ui.fullscreen.scroll_speedmultiplies mouse-wheel scrolling without affectingPgUp/PgDn.- Inside tmux, enable mouse support with
set -g mouse onif you want wheel scrolling and other mouse actions to reach VT Code. - Avoid fullscreen rendering in
tmux -CCsessions. iTerm2's control-mode integration does not handle alternate-screen mouse capture reliably.
/compactcompacts the current session history immediately when you want to shed context manually./compact edit-promptand/compact reset-promptmanage the saved default prompt for manual compaction requests.- For providers with native Responses compaction, VT Code uses the provider-owned compacted state.
- For local fallback compaction, VT Code rebuilds history around one structured summary plus retained recent user messages, then injects the session memory envelope.
context.dynamic.retained_user_messagescontrols that retained-user-message budget; the default is4.- On the local fallback path, VT Code also deduplicates older repeated single-file reads before summarization so the newest read stays available without repeatedly bloating the prompt.
/forkopens the archived-session picker. After selecting a session, VT Code now asks whether the new session should start from the full copied transcript or from a summarized fork.- A summarized fork starts from the same compacted handoff shape VT Code uses for local compaction: structured summary, retained user prompts, and the memory envelope.
- If a session stopped because it hit the local
max_budget_usdlimit, resuming it offers three choices: continue from the saved summary, continue with the full transcript after an explicit higher-cost warning, or start fresh. /agentsopens the subagent manager for creating, inspecting, editing, deleting, and browsing active delegated agents. New scaffolds use VT Code tool ids in frontmatter./agentopens the active-agent inspector. Selecting a child agent opens a modal over the current session instead of switching threads./subprocessesopens the Local Agents drawer for delegated agents and managed background subprocesses.
/loopschedules a prompt repeatedly for the current interactive session. It defaults to every 10 minutes when you omit the interval./schedulemanages durable scheduled tasks. They are polled while VT Code is open, and can also be run by the local scheduler daemon for background execution.- VT Code also recognizes narrow reminder phrases in chat such as
remind me at 3pm to ...,in 45 minutes, ...,what scheduled tasks do I have?, andcancel <job id|name>. - Session-scoped scheduled prompts fire only at idle boundaries so they do not interrupt an in-flight turn.
- For full behavior, limits, jitter, and CLI examples, see Scheduled Tasks.
VT Code supports an optional Vim-style prompt editor.
- Set
ui.vim_mode = trueto enable it by default for new sessions. - Use
/vim,/vim on, and/vim offto change the current session only. - Supported modes are
INSERTandNORMAL. - Supported subset includes motions, change/delete/yank operators,
f/F/t/T, text objects,p/P,J, and repeat with.. - VT Code does not implement visual mode, macros, or multiple registers; yanks reuse the single session clipboard.
- VT Code-specific prompt controls still win when relevant, including
Enter,Tab,Ctrl+Enter,/,@, and!.
/suggestopens a prompt-suggestion picker built from recent session context such as task state, active jobs, recent errors, and recent file activity.Alt+Prequests one inline ghost-text suggestion for the current draft. If a ghost suggestion is visible,Tabaccepts it; otherwiseTabkeeps its normal queue behavior.- VT Code routes prompt suggestion generation through
agent.prompt_suggestionsand falls back to deterministic local suggestions when the provider, model, or endpoint cannot service the request. - LLM-backed prompt suggestions can consume tokens. When
agent.prompt_suggestions.show_cost_notice = true, VT Code shows a one-time reminder in the session before the first LLM-backed inline suggestion. - Picking a suggestion inserts it into the composer. Empty drafts are replaced; non-empty drafts keep their content and append the suggestion after a blank line.
/taskstoggles the dedicated TODO panel. It is fed directly fromtask_trackerandplan_task_trackeroutput and remains independent from theCtrl+Tlog toggle./jobsopens the active/background jobs picker for PTY-backed command sessions.- In
/jobs,EnterorCtrl+Rfocuses the selected job output,Ctrl+Ppreviews a snapshot modal, andCtrl+Xsends an interrupt to the selected job. - Pressing
Enteron an empty draft opens/jobswhen active jobs exist; otherwise VT Code keeps the normal empty-enter behavior.
When a task is already running, VT Code keeps the active turn alive and lets you steer it:
EnterandTabqueue the current input for later processing.Ctrl+Entersends the current draft to the active run as steering text./pausepauses the active run at the next model/tool/approval boundary./resumeresumes a paused run while it is active. When idle,/resumestill opens archived sessions./stopstill cancels the active run immediately./compactstill works only while the session is idle; it rewrites the stored conversation context for the next turn instead of interrupting the active run./forkis available while idle and creates a new archived session, leaving the current session unchanged.Ctrl+Bstarts or stops the configured default background subagent when background mode is enabled anddefault_agentis set. Otherwise it opens the Local Agents drawer and shows setup guidance.Alt+Sopens or focuses the Local Agents drawer.- When the composer is empty and local agents exist,
Downopens the Local Agents drawer.UpandDownkeep normal history navigation once history traversal is active. - In the active-agent and subprocess inspectors,
Esccloses the overlay,Ctrl+Rreloads it,Ctrl+Krequests a graceful stop, andCtrl+Xforce-cancels the selected subprocess. - Foreground
!commands keep their status in the input/status area, andEsccollapses verbose output without killing the job.
- On GitHub-backed repositories, the header can show a PR review badge such as
PR: ready,PR: reviewed, orPR: outdated. - VT Code uses read-only
ghinspection for this status. Ifghis missing or unauthenticated, the header shows the appropriate CTA instead of failing the session. - The badge refreshes as branch and HEAD state change, and warnings appear when your review is outdated or you do not have write access.
- Plan Mode is strict read-only (except optional writes under
.vtcode/plans/for plan artifacts). - The agent emits planning output in
<proposed_plan>...</proposed_plan>blocks. task_trackerworks in Plan Mode and mirrors checklist state with plan sidecars;plan_task_trackerremains as a compatibility alias.- After a plan is emitted, VT Code shows an implementation choice: switch to Edit mode and execute, or continue planning.
- If automatic Plan->Edit switching fails, manually switch with
/plan offor/mode, or useShift+Tab/Alt+M.
VT Code keeps a command history scoped to the working directory. The history resets when you clear it manually or start a new directory session.
- Cleared with the
/clearcommand. - Use the arrow keys to navigate between entries.
- History expansion via
!is disabled by default to prevent accidental execution.
- Press
Ctrl+Rto start the reverse history search. - Type a query to highlight matching entries.
- Press
Ctrl+Ragain to cycle through older matches. - Accept the current match with
Tab,Esc, orEnterto execute immediately. - Cancel the search with
Ctrl+CorBackspaceon an empty query.
The Bash integration can run long commands asynchronously while you continue working with the agent.
- Ask VT Code to run a command in the background, or
- Press
Ctrl+Bwhile a command runs to move it to the background (press twice if your terminal uses tmux with the same prefix).
Background tasks return immediately with an ID. VT Code keeps streaming updates via the BashOutput tool, and tasks are automatically cleaned up when the session ends.
Common backgrounded commands include:
- Build systems (e.g., webpack, vite, make)
- Package managers (npm, yarn, pnpm)
- Test runners (jest, pytest)
- Development servers and other long-running processes
Prefix input with ! to run commands directly without agent interpretation:
! npm test
! git status
! ls -laBash mode streams the command and its output into the chat, supports backgrounding via Ctrl+B, and is ideal for quick shell operations while keeping a shared context with the agent.