AtomCode's TUI is built on ratatui + crossterm; common keybindings stick close to the conventions of mainstream terminal tools. Run /keys in a session to dump this table into the current scrollback, or /help for the slash-command list.
Input editing
Key
Action
Enter
Send the message
Ctrl+J
Insert newline (universal — sends a literal LF byte that every terminal accepts)
\ then Enter
Insert newline (atomcode fallback — a trailing backslash makes the line a continuation, works in every terminal)
Alt+Enter
Insert newline (most terminals; macOS Apple Terminal needs "Use Option as Meta key" enabled under Settings → Profiles → Keyboard; Windows Terminal reserves it by default — release in settings)
Shift+Enter
Insert newline (only terminals that disambiguate the modifier: Kitty / WezTerm / iTerm2 with Report Modifiers / Windows Terminal / Ghostty / Warp. Apple Terminal, xterm, GNOME Terminal, VS Code integrated terminal all collapse it to Enter — use Ctrl+J or \ + Enter instead)
Ctrl+Enter
Insert newline (requires a Kitty-keyboard-protocol terminal such as Kitty or WezTerm)
Jump to previous / next message (macOS Apple Terminal: enable Settings → Profiles → Keyboard → "Use Option as Meta key" first)
Ctrl+↑ / Ctrl+↓
Jump to previous / next user message
Home / End
Jump to top / bottom of the conversation
Mouse wheel
Scroll inside the chat area (atomcode captures the wheel)
Ctrl+L
Clear the current session's messages
Selection & copy
Key / action
Effect
Mouse drag
Select text in the chat area (atomcode-managed; auto-scrolls at selection edges)
Shift+ mouse drag
Use the host terminal's native selection (bypasses atomcode; better for cross-viewport copy)
Ctrl+Shift+C
Copy selection to system clipboard
/copy
Copy the AI's last complete reply
Right-click menu
Some terminals offer direct copy/paste (depends on the terminal, not atomcode)
Control flow
Key
Action
Esc
Cancel the in-progress tool call or streaming output
Ctrl+C
First press cancels the current action; second consecutive press exits
Ctrl+D
Exits when the input box is empty
Tool permission dialog
When the model is about to execute a dangerous action (destructive bash, writing sensitive files, deleting source code, etc.), AtomCode pops a confirmation dialog:
Key
Action
y / Enter
Allow once
a
Always allow this pattern for the current session
n / Esc
Deny
Don't get greedy
"Always allow" is granted per tool name + argument pattern and only for the current session — it resets next launch. For permanent cross-session exceptions, manage them in config (e.g. allowlists for specific paths).
Next steps
Slash Commands — pair keybindings with command completion