Skip to main content

Usage & Commands

Reference for flags, slash commands, keybindings, and the approval prompt the brio CLI emits.

Command-line flags

brio [--yolo] [--continue] [-v] [--debug] [--no-upgrade-check] [--prod]
brio login [--no-browser]
brio logout
FlagDefaultPurpose
--yolooffAuto-approve every tool call. Bypasses both the verb gate and the directory-sandbox gate.
--continueoffRestore the previous session transcript and reuse its session_id.
-v, --verboseoffAlso stream INFO+ logs to stderr. Per-session JSON logs are always written.
--debugoffStream all DEBUG+ logs to stderr; the TUI also opens a debug pane.
--no-upgrade-checkoffSkip the startup call to /v1/cli/latest-version.
--prodoffDev-only. Read .env.prod from cwd instead of .env.local.

Subcommands

  • brio login — RFC 8628 device-authorization flow. Writes $XDG_CONFIG_HOME/brio/config.env (~/.config/brio/config.env) at mode 0600. --no-browser suppresses auto-open of the approval URL.
  • brio logout — delete that config file.

Slash commands

Type a / in the input row and the spinner row above it shows matches. Tab completes the top match.

CommandEffect
/helpList commands.
/usageToken usage since process start plus the per-user 5h rolling-window snapshot.
/clearDrop conversation history and per-turn state. Keeps session_id and token totals.
/compact [focus]Summarize history into one block via a Haiku-backed summarizer. Optional [focus] steers what to keep.
/resetWipe the cloud session and zero local usage counters. Use between unrelated tasks.
/sendlogsUpload this session's log file to support for debugging.
/quitExit (same as Ctrl-D or typing exit / quit).

:::warning Copying text from the TUI

The TUI captures the mouse for scrollback, so a normal click-drag will not select text. To copy from the log buffer, hold Shift while you click-drag (or Shift + double-click for a word). Then copy with your terminal's usual shortcut (Cmd-C on macOS, Ctrl-Shift-C on most Linux terminals).

📋 Shift + drag to select. Without Shift, the mouse scrolls instead of selecting.

:::

Keybindings

KeyAction
EnterSubmit the current line. If an approval prompt is active, the line is the answer instead.
Up / DownWalk through input history (~/.brio_history).
TabComplete the current slash command.
PgUp / PgDnScroll the log buffer 10 lines. Mouse wheel works too.
Ctrl-HomeJump to the top of the log.
Ctrl-EndJump back to the live tail.
Ctrl-CIf an approval prompt is open: deny it. Otherwise: exit.
Ctrl-DExit.

Approval prompts

Two independent gates fire before any tool runs:

1. Verb gate — per tool type. When the agent wants to run a tool, the spinner row turns into:

▸ approve bash: colcon build --packages-select my_pkg? [y]es / [n]o / [a]lways bash / [d]eny all bash / [A]ll session
ChoiceEffect
y / yesApprove this single call.
n / anything elseDeny this single call.
aApprove this type for the rest of the session.
dDeny this type for the rest of the session.
A (capital)Approve all tool types for the rest of the session.
Ctrl-CDeny without committing to a policy.

2. Directory gate — per filesystem path. When a tool touches a directory outside the CLI's startup cwd, you get:

▸ approve directory access: /opt/ros/humble — [y]es once / [n]o / [a]lways this dir

a is recursive: approving /a/b grants /a/b/** for the rest of the session. The [A]ll-session verb shortcut does not bypass this gate — only --yolo does. Directories named in your prompt are auto-approved at turn start.

All gates reset on process exit.

Tool calls the agent can request

The agent emits structured events; the CLI executes them locally. The agent never gets a shell.

ROS 2 / build — preferred, typed: ros2 (e.g. ros2 topic echo /scan), colcon (e.g. colcon build).

Filesystem: read_file, write_file, apply_patch, list_dir, which, mkdir, rm, cp, mv.

Shell escape (last resort): bash — runs bash -c <command>. 25 s default timeout, output truncated to 200 lines.

Composite: batch — one approval covers a list of sub-events that share an intent. The TUI unwraps the result so you see each sub-call's output.

Anything outside this set is rejected client-side.

Query size

The CLI rejects single prompts estimated above ~1500 tokens (~6000 characters) before sending. Trim or split.

Local files

PathWhat
~/.config/brio/config.envAPI key + URL. Written by brio login, mode 0600.
~/.local/share/brio/logs/{date}/{session_id}.logPer-session JSON log (loguru).
~/.brio_historyInput history for Up/Down.
~/.brio_last_sessionTranscript saved on exit; restored by --continue.
~/.brio_last_session_idSession id reused by --continue.