Internal Commands (/)
| Command | Description |
|---|---|
/help | Show help |
/menu (or /) | Opens the interactive command palette — a navigable list of every command (see Command Palette) |
/exit or /quit | Exit ChatCLI |
/newsession | Start a new conversation session |
/config, /status or /settings | Configuration panorama (accepts subsections — see below); bare opens the palette with the sections |
/reload | Reload settings from .env — includes the embeddings provider (CHATCLI_EMBED_*): switching to bedrock/voyage/openai takes effect without restarting |
/switch | Switch LLM provider or model (with dynamic autocomplete); bare opens the providers/flags palette |
/provider (or /providers) | Switch the active LLM provider by name; bare opens the palette with the active providers (same UX as /model) |
/model <name> | Shorthand for /switch --model <name>; bare opens the palette with the available models |
/max-tokens <num> | Shorthand for /switch --max-tokens <num>; with no argument, shows the current value |
/agent or /run | Start agent mode |
/coder | Start coder mode (code engineering) |
/auth | Manage OAuth credentials |
/clear | Redraw/clear screen |
/connect | Connect to remote server (gRPC) |
/disconnect | Disconnect from remote server |
/context | Manage persistent contexts |
/plugin | Manage plugins |
/skill | Manage skills from registries |
/session | Manage sessions (save, load, list, delete, new, fork, search) |
/nextchunk | Load next file chunk |
/retry | Retry last failed chunk |
/retryall | Retry all failed chunks |
/skipchunk | Skip a file chunk |
/version | Check version |
/compact | Compact conversation history (auto or guided) |
/rewind | Rewind to a previous conversation checkpoint |
/memory | View/load/edit memory (today, yesterday, week, load, longterm, list, profile, profile set <field>=<value>, remember <fact>, forget <substring>, topics, projects, stats, facts, compact) |
/watch | K8s watcher status |
/mcp | Manage MCP servers (status, tools, restart) |
/hooks | List configured lifecycle hooks |
/cost | Show estimated session cost |
/worktree | Manage git worktrees (create, list, remove, status) |
/channel | MCP channels inbox + trigger engine — see /channel subcommands |
/websearch | Manage web search provider (status, list, provider, reset) |
/thinking | Cross-provider reasoning/thinking override (on|off|auto|low|medium|high|max|budget=N) — see #7 Reasoning Backbone |
/plan | Force Plan-and-Solve / ReWOO on next /agent or /coder — see #2 Plan-and-Solve |
/refine | Toggle Self-Refine for the session (on|off|once|auto) — see #5 Self-Refine |
/verify | Toggle Chain-of-Verification for the session (on|off|once|auto) — see #6 CoVe |
/reflect | Durable lesson queue (status, list, failed, retry, purge, drain) — see #3 Reflexion |
/schedule | Schedule a durable job (cron / relative / interval / wait-until) — see Scheduler |
/wait | Wait for a condition and optionally run an action — see Scheduler |
/jobs | Manage scheduled jobs (list, show, tree, cancel, pause, resume, logs, history, daemon, gc) |
/parked | List agents parked via @park — prune removes terminals, gc <dur> removes old ones — see Agent Park & Resume |
/resume | /resume <token> forces immediate resume of a park (idempotent against auto-resume) |
/cancel-park | /cancel-park <token> aborts a park: deletes snapshot + cancels scheduler job |
/ratelimit or /limits | Show the current provider’s rate limits, parsed from the last response’s x-ratelimit-* headers (remaining requests/tokens and reset) |
/export | Export the current session’s agent trajectory as ShareGPT-format JSONL (fine-tuning / analysis) |
/moa | Mixture-of-Agents: several models propose in parallel and an aggregator synthesizes (CHATCLI_MOA_MODELS) — see Mixture-of-Agents |
/gateway | Run ChatCLI as a detached messaging daemon (start, status, stop): each message runs through the agent loop and progress is streamed over Telegram/Slack/Discord/WhatsApp/webhook — see Chat Gateway |
/hub | Inspect and manage the shared cross-channel conversation: whoami (principal + active conversation), bind <platform> <userid> [principal], bindings [principal] — see Conversation Hub |
/lsp <file> | Code diagnostics (errors/warnings) for a file via the Language Server Protocol — see LSP Diagnostics |
Interactive Command Palette
Commands that have subcommands, flags or values open a navigable palette when typed bare and confirmed with Enter — the same experience Claude Code users get. Instead of just printing a list, the palette lets you arrow through it and select.| How to open | Result |
|---|---|
/ or /menu + Enter | Root palette: every command grouped by category |
A bare “pickable” command (e.g. /model, /config, /provider, /switch) + Enter | Scoped palette for that command: its real subcommands/flags/values |
<TAB> always show exactly the same set, with no drift.
Palette navigation:
| Key | Action |
|---|---|
↑ / ↓ (or Ctrl+P / Ctrl+N) | Move the selection |
| Type | Filter (fuzzy) |
→ / Enter | Drill into a sublevel, or select (runs the command) |
Tab | Insert the selection as text |
← / Esc / Backspace | Go back one level (or cancel at the root) |
Ctrl+C | Cancel |
↵): every scoped picker leads with an entry that runs the command with no arguments, preserving the behavior of commands whose bare form already did something — e.g. /config shows the overview, /switch opens the provider picker. That entry’s description summarizes what the command does, so it never looks “empty”.
The palette is themed (it follows the active theme, see /config ui theme) and runs only in the interactive REPL — headless runs (scheduler, gateway, one-shot) execute the command as typed.
External subcommand chatcli daemon
chatcli daemon {start|stop|status|ping|install} [--detach] [--socket <path>] — controls the scheduler daemon in the background. Any interactive CLI detects the daemon and becomes a thin client over the UNIX socket. See Scheduler → Daemon mode.
External subcommands chatcli mcp-server and chatcli acp
chatcli mcp-server (alias mcp-serve) — runs ChatCLI as an MCP server over stdio. Beyond chat (ask_chatcli), it exposes the agent loop (agent_task), the coder (coder_task) and the curated built-in tools (read, search, tree, websearch, webfetch), so an MCP client can drive ChatCLI’s real functionality. Use LLM_PROVIDER/LLM_MODEL to pick the backend. See MCP Server (ChatCLI as a server).
chatcli acp — runs ChatCLI over the Agent Client Protocol (stdio), for integration with editors that speak ACP.
/config security — mutable rules
/config security is now hierarchical: the bare form still shows the read-only panorama; the new subcommands mutate the PolicyManager live and persist to ~/.chatcli/coder_policy.json. Used by both interactive /coder and the scheduler preflight.
| Subcommand | Description |
|---|---|
/config security | Read-only dump (previous behavior) |
/config security rules | List active rules grouped by action (deny, allow, ask) |
/config security allow "<pattern>" [--yes] | Add ALLOW rule; prompts if the pattern is broad |
/config security deny "<pattern>" [--yes] | Add DENY rule; prompts [y/N] |
/config security forget "<pattern>" [--yes] | Remove rule; prompts [y/N] |
/config security reload | Force re-read of the JSON (after external file edit) |
<toolName> <args> as the PolicyManager normalizes (@coder exec <cmd>). Deny always beats allow.
/channel — MCP channels inbox and triggers
Manages the MCP Channels inbox and the trigger engine (rules in ~/.chatcli/mcp/triggers.json). All subcommands support autocomplete (Tab after /channel ).
| Subcommand | Argument | Description |
|---|---|---|
/channel or /channel list | — | Lists up to 20 most recent ring messages with seq, timestamp, server, channel and preview. Shows total and unread counters, plus a warning when the engine is paused |
/channel <name> | channel name | Filters the listing to that channel |
/channel ack | — | Marks every message as read, clears the pending notify banner. Returns how many entries were cleared |
/channel inject | — | Injects the last 10 messages into history as a system message (legacy behavior). Useful when you want to provide explicit context without waiting for auto-injection of the 5 most recent |
/channel pause | — | Pauses the trigger engine. Messages keep entering the ring/persistence, but no Action is emitted (zero banners, confirms, autos) while paused |
/channel resume | — | Reactivates the trigger engine |
/channel rules | — | Lists active rules with name, mode, filters (server/channel/contentRegex) and configs (rate, dedup, tools) |
/channel rules reload | — | Re-reads ~/.chatcli/mcp/triggers.json without restarting ChatCLI. On schema error, keeps the previous rules active and shows the error |
/channel confirm <id> | id required | Accepts a pending confirm action (default = yes); fires the agent with the rule template inside an AUTO-AGENT envelope box |
/channel confirm <id> no | id required | Refuses a pending confirm action without firing anything |
/channel run <seq> | seq required | Fires the agent manually against a specific ring message (use the seq shown by /channel list) — useful for investigating a message that came in as notify |
Harness/Quality Pipeline — At a Glance
ChatCLI ships seven LLM-agent patterns that can be toggled per session via slashes:| Pattern | Slash | Default | What it does |
|---|---|---|---|
| #1 ReAct | — | always on | Base loop |
| #2 Plan-and-Solve | /plan | auto (complexity ≥ 6) | JSON plan + ReWOO |
| #3 Reflexion | /reflect | on (on errors) | Persisted lessons |
| #4 RAG + HyDE | — | off | Semantic retrieval |
| #5 Self-Refine | /refine on | off | Critique + rewrite |
| #6 CoVe | /verify on | off | Chain-of-Verification |
| #7 Reasoning | /thinking on | auto (planner, refiner, verifier, reflexion) | Cross-provider |
/reflect — subcommands
The durable Reflexion queue exposes observability and DLQ triage operations. All have Tab autocomplete:
| Subcommand | What it does |
|---|---|
/reflect | Status: queue depth + DLQ size + subcommands hint |
/reflect <free text> | Persist manual lesson to memory.Fact (no LLM) |
/reflect list | List pending + DLQ with trigger, attempts, age, task preview |
/reflect failed | DLQ only, with last error — ideal for triage |
/reflect retry <job-id> | Re-queue a DLQ job (resets Attempts=0) — Tab autocompletes live IDs |
/reflect purge <job-id> | Remove permanently from the DLQ — Tab autocompletes live IDs |
/reflect drain | Force WAL replay (pending items from a previous session) |
/config — Panorama and Sections
/config (aliases: /status, /settings) has two modes: short panorama (no argument — default) and drill-down by section. /config <TAB> autocomplete lists the sections.
| Command | Description |
|---|---|
/config | Short panorama: provider, model, session (messages, tokens, cost, duration), active persona, counters (plugins, MCP servers, hooks), websearch chain, remote connection if active |
/config all | Full dump — all sections in sequence |
/config general | .env path, locale, logging, version check, history file |
/config providers | Env vars for each provider (OpenAI, Claude, Bedrock, Copilot, GitHub Models, OpenRouter, ZAI, MiniMax, Moonshot, StackSpot, Ollama) + API key presence (no value leaked) |
/config agent | Agent runtime: coder UI, workers, subagents, timeouts, tmpdir, denial caps, per-agent overrides, active persona |
/config resilience | Payload caps, recovery ladder, stream timeout, global TLS trust (CA bundle, skip-verify), Bedrock proxy (CA bundle, IMDS), compaction |
/config session | Current session (name, messages, cost, budget), attached contexts, memory system |
/config integrations | MCP (servers + tool count), hooks, plugins, skill registries, websearch (active chain), worktrees (if in a git repo), K8s watcher, remote connection |
/config auth | OAuth status per provider (anthropic, openai-codex, github-copilot, github-models) with token expiry, keychain backend |
/config security | Command policy (allow/denylist, sudo), workspace sandbox, Coder policy, TLS/proxy, redaction |
/config quality | Seven-pattern pipeline: Self-Refine, CoVe, Reflexion, Plan-First, HyDE (vectors + provider + count), Reasoning backbone — see full overview |
/config server | Conditional — only renders when any server-mode env is set (gRPC, JWT, rate limit, fallback chain, watcher, audit, operator) |
/config hub | Conversation Hub: the effective value of each setting (with its source — setting/env/default), bindings, and session state. Mutable — see below |
/config hub — mutable settings
Unlike bare /config hub (a read-only panorama), the subcommands change hub settings at runtime — persisted in hub.db and read live by the gateway daemon (cross-process, no restart):
| Command | Effect |
|---|---|
/config hub set enabled <on|off> | Turn the hub on/off |
/config hub set principal <name> | Set the shared conversation identity |
/config hub set isolate <on|off> | Isolate each channel (multi-user bot) vs. collapse to the principal |
/config hub set ttl_hours <n> | Hours before pruning an idle conversation (0 disables) |
/config hub reset <key> | Drop the override; back to env var/default |
/config hub reprints immediately after each set/reset, showing the new value and its source. Mutation requires local hub mode or /connect.
/websearch — Web Search Provider
| Command | Description |
|---|---|
/websearch or /websearch status | Show current provider + active fallback chain |
/websearch list | List known providers and which are configured |
/websearch provider <searxng|duckduckgo|brave|mojeek|auto> | Set preferred provider for the session (sets CHATCLI_WEBSEARCH_PROVIDER) |
/websearch reset | Remove override and return to auto mode |
duckduckgo (default, HTML scraping), searxng (self-hosted via SEARXNG_URL), brave and mojeek (independent indexes, HTML scraping). Default chain: duckduckgo → searxng → brave → mojeek. See Web Tools for details.
Provider and Model Switching (/switch)
| Command | Description |
|---|---|
/switch | Bare opens the palette of providers/flags; also accepts the flags below |
/switch --model <name> | Switch model for the active provider |
/switch --model | List all available models (dynamic from API) |
/switch --max-tokens <num> | Set max tokens for responses |
/switch --realm <name> | Change realm/tenant (StackSpot only) |
/switch --agent-id <id> | Change agent (StackSpot only) |
/provider <name> | Switch the active provider by name (case-insensitive); bare opens the palette with the active providers |
/providers | Alias of /provider |
/model <name> | Shorthand for /switch --model <name> (bare opens the palette with the models) |
/max-tokens <num> | Shorthand for /switch --max-tokens <num> (no argument shows the current value) |
/switch --model (and /model) autocomplete fetches models directly from the provider’s API using the active token/key. Each suggestion shows [API] (dynamic) or [catalog] (static). /model and /max-tokens delegate to /switch, so they share exactly the same validation and behavior.
/provider is the navigable counterpart to the provider picker: type /provider and Enter to open the palette with the active providers (the current one marked), pick one and the switch is applied — the same switch logic as /switch, just by name instead of a numeric index.
Context Commands (@)
| Command | Description |
|---|---|
@file <path> | Attach file content or directory structure |
@file --mode <mode> | Mode: full, summary, chunked, smart |
@command <cmd> | Execute command and attach output as context |
@command --ai | Send output directly to AI for analysis |
@command -i | Interactive mode (e.g., ssh, vim) |
@git | Inject Git repository status, diff, and log |
@env | Inject environment variables (sensitive ones redacted) |
@history | Inject shell command history |
LLM-callable plugins (@<tool>)
Tools the agent can invoke via <tool_call> (in /agent, /coder modes). Full catalog in Plugin System and Atomic Tools.
| Plugin | Subcommands | Docs |
|---|---|---|
@coder | read, write, patch, multipatch, tree, search, exec, test, rollback, git-status, git-diff, git-log, git-changed, git-branch, clean | Plugin @coder |
@read | (flat) file, from_line, to_line, head, tail, encoding | Atomic Tools |
@search | (flat) term, dir, max_results, include | Atomic Tools |
@tree | (flat) dir, depth, exclude | Atomic Tools |
@todo | write, list, mark | Atomic Tools |
@websearch | search | Web Tools |
@webfetch | fetch | Web Tools |
@scheduler | schedule, wait, query, list, cancel | Scheduler |
@park | delay, until, for_url, for_cmd | Agent Park |
Agent Mode — Actions
| Action | Description |
|---|---|
[N] | Execute command number N |
a | Execute all pending commands |
eN | Edit command N |
tN | Simulate (dry-run) command N |
cN | Ask AI to continue with output from N |
pcN | Add pre-execution context |
acN | Add post-execution context |
vN | View full output in pager |
wN | Save output to temporary file |
p | Toggle compact/full view |
r | Redraw the screen |
q | Exit agent mode |
Sessions (/session)
| Command | Description |
|---|---|
/session save <name> | Save the current conversation |
/session load <name> | Load a saved conversation |
/session list | List all sessions |
/session delete <name> | Delete a session |
/session new | Start a clean session |
/session fork <name> | Fork current session into an independent copy |
/session search <term> | Full-text search across saved sessions, showing snippets with the term highlighted |
When connected to a remote server, sessions can be saved/loaded locally, remotely, or both.
Persistent Contexts (/context)
| Command | Description |
|---|---|
/context create <name> ... | Create snapshot of files/directories (--mode knowledge indexes documentation corpora as a knowledge base) |
/context update <name> ... | Update existing context |
/context attach <name> | Attach context to current session |
/context detach <name> | Detach context |
/context list | List saved contexts |
/context show <name> | Show details and files |
/context inspect <name> | Detailed statistics |
/context delete <name> | Delete permanently |
/context merge <new> <c1> <c2> | Combine contexts |
/context attached | Show attached contexts with token estimates and cache hints |
/context export <name> <file> | Export to JSON |
/context import <file> | Import from JSON |
/context metrics | Usage statistics |
Skills (/skill)
| Command | Description |
|---|---|
/skill search <query> | Search across all registries (parallel fan-out) |
/skill install <name> [--from <reg>] | Install skill from a registry (specific or auto-detect) |
/skill uninstall <name> | Remove installed skill (disambiguates if multiple sources) |
/skill list | List installed skills with source and version |
/skill info <name> [--from <reg>] | Full metadata (installs, security audits) |
/skill registries | Show configured registries and status |
/skill registry enable <name> | Enable a registry (immediate hot-reload) |
/skill registry disable <name> | Disable a registry (immediate hot-reload) |
/skill prefer [name] [source] | Set/show preferred source for conflicting skills |
/skill prefer <name> --reset | Remove preference (revert to default: local wins) |
/skill pin <name> | Pin a skill for the session — injected on every turn until /skill unpin |
/skill unpin <name> | Remove a skill from the pinned set |
/skill pinned | List skills pinned for the current session |
/skill help | Help for the /skill command |
Command-Line Flags (One-Shot)
| Flag | Description |
|---|---|
-p, --prompt | Execute a prompt and exit |
--provider <name> | Override provider (e.g., CLAUDEAI) |
--model <name> | Override model |
--timeout <duration> | Time limit (e.g., 10s, 1m) |
--max-tokens <num> | Limit tokens in response |
--agent-auto-exec | Execute first safe command in agent mode |
--no-anim | Disable animations (useful in scripts) |
-v, --version | Show version |
-h, --help | Show help |
Subcommands
- chatcli server
- chatcli connect
- chatcli watch
Starts as a gRPC server for remote access.
| Flag | Description | Default |
|---|---|---|
--port <int> | gRPC port | 50051 |
--token <string> | Authentication token | "" |
--tls-cert <path> | TLS certificate | "" |
--tls-key <path> | TLS key | "" |
--provider <name> | Default LLM provider | Auto |
--model <name> | Default model | Auto |
--watch-deployment <name> | K8s deployment to monitor | "" |
--watch-namespace <ns> | Namespace | "default" |
--watch-interval <dur> | Collection interval | 30s |
--watch-window <dur> | Observation window | 2h |
--watch-max-log-lines <n> | Max log lines per pod | 100 |
--watch-kubeconfig <path> | Kubeconfig | Auto |
Memory
| Command | Description |
|---|---|
/memory or /memory today | Show today’s notes |
/memory yesterday | Show yesterday’s notes |
/memory <date> | Show notes from a date (YYYY-MM-DD, YYYYMMDD, DD/MM/YYYY) |
/memory week | Notes from the last 7 days |
/memory longterm | MEMORY.md content (long-term facts) |
/memory list | List all memory files (includes structured JSONs) |
/memory load <date> | Load notes into conversation context |
/memory profile | Automatically detected user profile (name, role, company, location, skills, certifications, goals) |
/memory profile set <field>=<value> | Set/update a profile field manually (e.g. certifications=CKA, company=ACME). List fields accumulate and dedupe |
/memory remember <fact> | Explicitly add a long-term fact (accepts a [category] prefix) |
/memory forget <substring> | Remove long-term facts containing the given substring |
/memory topics | Tracked recurring topics |
/memory projects | Tracked projects with status |
/memory stats | Usage statistics (sessions, peak hours, errors, features) |
/memory facts [category] | Facts with scores (filter: architecture, pattern, preference, gotcha, project, personal) |
/memory compact | Force memory compaction (LLM + old note cleanup) |
Compaction and Rewind
| Command | Description |
|---|---|
/compact | Automatic compaction (3-level pipeline) |
/compact <instruction> | Guided compaction — preserves specific information |
/rewind | Display checkpoint menu for restoration |
| Esc+Esc | Quick shortcut for /rewind (2x Esc within 500ms, only when input is empty) |
/compact accepts a natural language instruction. Example: /compact preserve file paths and decisions.