Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

CLI Usage

Prompts and output

zo joins positional arguments into one prompt, so quoting is optional unless the shell needs it:

zo What does cargo check do
zo 'Explain `cargo check` in two sentences'

Text responses stream progressively. Terminals receive Markdown formatting and syntax-highlighted code; redirected stdout uses plain text:

zo 'Write a release note' > RELEASE_NOTE.txt

STDIN pipelines

Piped STDIN is appended after file references and prompt text:

git diff | zo 'Review these changes for bugs'
cargo test 2>&1 | zo /sonnet 'Explain the failures'
cat data.csv | zo @schema.json 'Check this data against the schema'

STDIN and referenced files must be UTF-8. The prompt, STDIN, and referenced contents share the per-turn byte limit: 1 MiB by default. Oversized input is rejected rather than truncated.

Web search

--web adds OpenRouter's server-side web-search tool to text and chat requests:

zo --web 'What changed in the latest stable Rust release?'
zo --chat --web 'Help me research terminal UI libraries'

Set web = true in the config to enable it by default. Web search cannot be combined with image mode.

Inspecting requests and tools

zo --verbose --files read 'Inspect this project'
zo --debug /sonnet @Cargo.toml 'Explain these dependencies'
  • --verbose prints the resolved model and compact tool calls as they happen.
  • --debug previews the resolved request and asks before sending; later tool calls include their full arguments.
  • --debug and --non-interactive conflict because debug requires confirmation.

Automation and safety controls

  • --accept-writes or -y approves existing-file overwrites and edits without prompting.
  • --non-interactive disables prompts; anything still requiring approval is denied.
  • --hidden removes the extra hidden-path gate for file/output tools, image output, and shell checks; normal write approvals and shell policies still apply.
  • --max-input-bytes and --max-session-bytes override the configured byte limits for one invocation.

For unattended edits, both automation flags are normally needed:

zo --files write --non-interactive --accept-writes 'Apply the requested refactor'

Options

OptionPurpose
-m, --model NAMEOverride model selection
--reasoning-effort LEVELSet auto, max, xhigh, high, medium, low, minimal, or none
-c, --chatStart a multi-turn session
--image FILEGenerate one image at FILE
--files read|writeEnable workspace file tools
--shellEnable shell tools
--webEnable server-side web search
--policies NAME[,NAME]Select shell policy files; requires --shell
-y, --accept-writesAuto-approve overwrites and edits
--non-interactiveDeny anything that would prompt
--hiddenPermit hidden tool/output paths
-v, --verboseShow model resolution and compact tool calls
-d, --debugPreview the request and confirm before sending
--max-input-bytes BYTESOverride the aggregate turn-input limit
--max-session-bytes BYTESOverride the retained-session limit

Run zo --help for the authoritative command synopsis and option conflicts.

Actions

zo +list-models
zo +init-config

Actions use exact names and must stand alone. Running zo with no arguments also displays help.

Models & Customization → · Files & Workspace Tools → · Chat →