symbiotic opens the terminal UI (TUI). It runs the same engine as the IDE extension, so both share the same configuration files, agents, permissions, and security modes.
Launch
If you pipe text into
symbiotic, it is added in front of --prompt:
symbiotic -s <id>).
Layout
Home screen
Before your first message you see the home screen: the logo, a short explanation of the security modes, the prompt, and tips (hide them withCtrl+X H). The bottom bar shows the current directory and git branch, the number of connected MCP servers, and the version.
Session screen
Once you send a message, the session screen shows the conversation, the prompt, and a sidebar. Sidebar. Shown automatically when the terminal is wider than 120 columns. Toggle it withCtrl+X B; on narrow terminals it opens as an overlay. It contains:
Header. When the sidebar is hidden, a header shows the session title, context usage, and cost instead. Hide it with Hide header in the command palette.
Prompt box. The prompt box shows the current state of the session:
- Above the input: the active agent, the security mode (
● Strict,◐ Balanced,○ Permissive), and thetab/ctrl+shints. - Below the input: the model, its provider, and the selected variant.
- While the agent works: a spinner, retry messages, and the
esc interrupthint.
Write a prompt
Mention files, agents, and resources with @
Type @ to open autocomplete. It lists:
- Subagents, such as
@exploreor@general, to delegate a task directly - Files and directories in the project. Press
Tabon a directory to browse into it. Add a line range with#, for example@src/auth/login.ts#10-40 - MCP resources from your connected MCP servers
Up/Down to move through suggestions, Enter or Tab to select, and Esc to close.
Run commands with /
Type / at the start of the input to autocomplete built-in commands, your custom commands, and MCP prompts (marked :mcp). Skills don’t appear in this list, but you can still run one by typing /<skill-name> in full, or pick one with /skills.
See Common commands for the full list.
Run shell commands with !
Type ! at the start of the input to switch to shell mode. The prompt label changes to Shell. Press Enter to run the command directly, without going through the model. The output is added to the conversation, so the agent can see it in later messages. Long output is collapsed to 10 lines; click it to expand.
Press Esc, or Backspace on an empty input, to leave shell mode.
Attach images and paste text
- Images: paste an image from the clipboard with
Ctrl+V, or drag and drop an image file onto the terminal. It appears as[Image 1]in the prompt. - Long text: pasting 3 or more lines (or more than 150 characters) shows a placeholder such as
[Pasted ~42 lines]. The full text is sent with the message. To paste text as is, setexperimental.disable_paste_summarytotruein your configuration file.
Stash a prompt
To set aside a prompt you’re writing, open the command palette (Ctrl+P) and select Stash prompt. Use Stash pop to restore the last one, or Stash list to pick one (press Ctrl+D twice to delete an entry). Up to 50 prompts are kept.
Switch agent, model, and security mode
The model you pick is remembered per agent, and the variant per model. If an agent defines its own
security_mode, it applies while that agent is active.
In the model list, press Ctrl+F to mark a model as a favorite and Ctrl+A to connect a provider.
See Agents, Models and providers, and Security modes.
Permissions and questions
When the agent needs approval for a tool call (based on your tool permissions), the prompt is replaced by a Permission required panel. File edits show the diff.
Use
←/→ (or h/l) and Enter, or click an option. Esc rejects. Ctrl+F shows the request full screen.
When a subagent’s request is rejected, you can tell the agent what to do instead.
When the agent asks you a question, pick an answer with 1-9 or the arrow keys and press Enter, or choose Type your own answer. Esc dismisses the question. With several questions, use Tab to move between them and review your answers in the Confirm tab.
Work with messages
Click one of your messages to open Message Actions:- Revert: undo this message and everything after it, including the file changes, and put the message back in the prompt
- Copy: copy the message text
- Fork: start a new session from this point
Scroll
The view follows new output while you’re at the bottom.
Display options
These choices are saved between sessions, except code concealment.
Diffs are shown side by side when the terminal is wider than 120 columns, and stacked otherwise. Set
diff_style to "stacked" in tui.json to always stack them.
To browse all your git changes, use /diff. It opens a full-screen diff viewer; press ? in it to see its keybinds.
Subagents
When the agent delegates work to a subagent, the task appears in the conversation. Click it to open the subagent’s session.
In the subagent list, press
Ctrl+A to abort a running subagent. Subagent sessions are read-only: permission requests from subagents appear in the parent session.
Sessions
Use/sessions (Ctrl+X L) to switch sessions. Sessions are grouped by date. In the list:
Ctrl+Fpins a session (up to 9). Jump to pinned sessions withCtrl+X 1toCtrl+X 9Ctrl+Rrenames a sessionCtrl+Dtwice deletes a session
/new (Ctrl+X N).
Command palette
PressCtrl+P to open the command palette. It lists every available action with its keybind, and a Suggested section at the top. Type to filter. Some actions are only available here, including:
- Stash prompt, Stash pop, and Stash list
- Toggle appearance (switch between dark and light)
- Show/Hide header, Hide tool details, Show generic tool output, and Toggle session scrollbar
- Disable/Enable terminal title, Disable/Enable animations, and Disable/Enable diff wrapping
- Open docs
Themes
Use/themes (Ctrl+X T) to pick a theme. The list previews each theme as you move through it; press Esc to keep your current theme. The default theme is symbiotic.
Built-in themes: symbiotic, aura, ayu, carbonfox, catppuccin, catppuccin-frappe, catppuccin-macchiato, cobalt2, cursor, dracula, everforest, flexoki, github, gruvbox, kanagawa, lucent-orng, material, matrix, mercury, monokai, nightowl, nord, one-dark, opencode, orng, osaka-jade, palenight, rosepine, solarized, synthwave84, tokyonight, vercel, vesper, and zenburn.
The system theme uses your terminal’s color palette. It’s only listed if your terminal reports its palette.
Symbiotic Code detects whether your terminal has a dark or light background. To override it, use Toggle appearance in the command palette.
Set a theme in the configuration
Settheme in tui.json. It takes precedence over the theme picked with /themes.
tui.json
Create a custom theme
Add a JSON file to athemes folder. The file name is the theme name.
theme. A color can be a hex value, the name of an entry in defs, a { "dark": ..., "light": ... } pair, an ANSI color number (0-255), or "none" for transparent.
.symbiotic/themes/my-theme.json
selectedListItemText, backgroundMenu, and thinkingOpacity (a number, default 0.6) are optional.
Theme color keys
Theme color keys
- Base:
primary,secondary,accent,error,warning,success,info,text,textMuted,background,backgroundPanel,backgroundElement,border,borderActive,borderSubtle - Diff:
diffAdded,diffRemoved,diffContext,diffHunkHeader,diffHighlightAdded,diffHighlightRemoved,diffAddedBg,diffRemovedBg,diffContextBg,diffLineNumber,diffAddedLineNumberBg,diffRemovedLineNumberBg - Markdown:
markdownText,markdownHeading,markdownLink,markdownLinkText,markdownCode,markdownBlockQuote,markdownEmph,markdownStrong,markdownHorizontalRule,markdownListItem,markdownListEnumeration,markdownImage,markdownImageText,markdownCodeBlock - Syntax:
syntaxComment,syntaxKeyword,syntaxFunction,syntaxVariable,syntaxString,syntaxNumber,syntaxType,syntaxOperator,syntaxPunctuation
Configuration
TUI settings live intui.json (or tui.jsonc), separate from symbiotic.json:
- Global:
~/.config/symbiotic/tui.json - Project:
tui.jsonat the root of your project, or.symbiotic/tui.json - Custom path: the
SYMBIOTIC_TUI_CONFIGenvironment variable
tui.json
theme or keybinds in symbiotic.json, they are moved automatically to a tui.json next to it on startup.
Leader key
Most shortcuts start with the leader key,Ctrl+X by default. Press Ctrl+X, release it, then press the next key within 2 seconds. For example, Ctrl+X N starts a new session. See Keybinds to change it or any other shortcut.
Environment variables
Mouse and clipboard
The TUI supports the mouse: click messages, tool calls, buttons, list items, and sidebar sections, and scroll with the wheel. Copy text: select it with the mouse. It’s copied to the clipboard when you release the button, and a Copied to clipboard notification appears. On Windows, copy on select is off by default: select the text, then pressCtrl+C or right-click to copy it.
Clipboard copy works over SSH and in tmux or screen, through the OSC 52 terminal sequence (your terminal must support it).
Exit
- Press
Ctrl+Con an empty prompt (Ctrl+Cfirst clears the input if it isn’t empty) - Press
Ctrl+Don an empty prompt, orCtrl+X Q - Type
/exit(or/quit,/q), or typeexit,quit, or:qand pressEnter
Ctrl+Esc suspends the TUI and returns you to the shell. Run fg to resume.
Attach to a running server
The TUI can connect to a Symbiotic Code server started withsymbiotic serve or symbiotic web, for example on a remote machine or in a container:
attach accepts --dir (directory to work in on the server), -c, -s, --fork, and -p, --password. The password defaults to the SYMBIOTIC_SERVER_PASSWORD environment variable.
Next steps
Common commands
All slash commands and CLI commands.
Keybinds
Customize every shortcut.
Agents
Build, Plan, Ask, Debug, and subagents.