Skip to content

Chat Mode

Chat mode is the default interactive experience in Caboose. You type messages, the agent responds with streaming text and tool calls, and the conversation persists automatically.

Every conversation is a session, persisted to SQLite in real time. Sessions survive crashes and restarts.

ActionHow
Start a new session/new or launch caboose
Resume a sessionCtrl+O to open the session picker
Search sessionsType in the session picker — full-text search across all past sessions
Rename a session/title <name>
List sessions/sessions

Sessions are titled automatically from your first message (3–6 words, generated by the LLM). Non-interactive mode (--prompt) also creates sessions you can resume later.

Prefix any message with ! to run a shell command directly without involving the LLM:

!git log --oneline -10
!ls -la src/
!cargo test 2>&1 | tail -20

Output is shown as a system message in chat. Supports pipes, redirects, and shell builtins. Truncates at 200 lines, and shows the exit code on failure. Works even without an API key configured.

Attach images to any message in three ways:

  • Drag and drop a file onto the TUI
  • @path.png — reference a file by path in your message
  • Clipboard paste — images on your clipboard are detected automatically

Images are auto-compressed before sending: Caboose tries passthrough first, then resizes, then re-encodes as JPEG if needed. PNG and WebP images with transparency skip JPEG re-encoding.

Mouse over any assistant message to reveal a [ y copy ] badge in the top-right corner of that message. Press y or click the badge to copy the full message text to clipboard. A confirmation appears as a system message.

You can send up to 3 messages while the agent is still responding. Queued messages are processed in order after the current turn completes. This lets you steer the agent without waiting for it to finish.

The permission mode controls what the agent can do without asking. Cycle through modes with Tab:

ModeReadsWritesShellMCP
PlanAutoBlockedBlockedBlocked
CreateAutoApprovalApprovalApproval
AutoEditAutoAutoApprovalApproval
ChugAutoAutoAutoAuto

The current mode is always visible in the footer status bar.

Models that support extended thinking show streaming thinking blocks in chat as collapsible sections. Toggle thinking on/off with Ctrl+T, or set a level with /reasoning:

/reasoning # open level picker (Off / Low / Medium / High)

The thinking toggle is hidden for models that don’t support it.

/status

Shows the current provider, model, permission mode, token usage for the current session, and total session cost.

/undo

Rewinds to the most recent checkpoint. Checkpoints are created automatically before file-modifying tool calls, so /undo restores the previous file state.

Press Ctrl+K to open the command palette, which provides fuzzy search across all commands and skills. You can also type / in the input area to trigger autocomplete.

Caboose extracts and persists facts across sessions:

  • Project memory — stored in .caboose/memory/MEMORY.md, lives alongside your code
  • Global memory — stored in ~/.config/caboose/memory/, shared across all projects
  • Auto-extraction — happens at session end

Manage memories with /memories (view) and /forget (remove entries).

Set a maximum spend per session to prevent runaway costs:

  • Configure via /settings or max_session_cost in config
  • Warning at 80% of the budget in the footer
  • Pause at 100% — you can continue, raise the limit, or stop
  • Default: off (no limit)

Toggle the sidebar with Ctrl+B. It shows files modified (collapsible), MCP server status, stored memories, and session metadata. Drag the sidebar border to resize — clamped between 20 and 80 columns.

Press Ctrl+= to toggle a full PTY-backed terminal panel inside the TUI. Run tests, check git status, or execute anything you want to handle yourself without leaving Caboose.