[
{
"id": "root",
"command": "/help",
"title": "SynapsCLI Help",
"summary": "Fast paths for finding commands, settings, plugins, models, and diagnostics.",
"category": "Core",
"topic": "Branch",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["help", "start", "commands"],
"lines": [
"Start here. Pick a path or search everything.",
"",
"Common paths",
" /help find Search every help topic",
" /model Choose or inspect models",
" /settings Configure providers and preferences",
" /plugins Manage extensions",
" /help doctor Diagnose local setup",
"",
"Guides",
" /help models Models, providers, and routing",
" /help plugins Plugins, skills, commands, and trust",
" /help sessions Sessions, resume, compact, and chains",
"",
"Tip: type /help find and start typing."
],
"related": []
},
{
"id": "find",
"command": "/help find",
"title": "Find help",
"summary": "Open a searchable lightbox of all help topics.",
"category": "Core",
"topic": "Branch",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["search", "filter", "index", "discover"],
"lines": ["Open the in-memory help index, type to filter, use ↑/↓ to move, Enter for detail, Esc to close."],
"related": ["/help"]
},
{
"id": "effort",
"command": "/effort",
"title": "Reasoning effort",
"summary": "Pick a reasoning effort level for the active model from a lightbox.",
"category": "Models",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["effort", "reasoning", "thinking", "level", "budget"],
"lines": [
"Open a lightbox listing ONLY the effort levels the active exact model supports.",
"",
" /effort Open the effort lightbox",
" /effort <level> Apply a level directly (same checked path as /thinking)",
"",
"Enter applies on the fly (validated against the exact model; persisted to config and the session). Esc cancels.",
"Not available while a response is streaming.",
"",
"Related: /thinking, /model, /settings"
],
"related": ["/model", "/settings"]
},
{
"id": "settings",
"command": "/help settings",
"title": "Settings",
"summary": "Configure providers, API keys, themes, plugins, and defaults.",
"category": "Settings",
"topic": "Branch",
"protected": true,
"common": true,
"aliases": ["/settings help"],
"keywords": ["settings", "config", "api key", "theme", "preferences"],
"lines": [
"Configure SynapsCLI from a focused modal.",
"",
"Common commands",
" /settings Open settings",
" /ping Check configured provider health",
" /model Choose the active model",
"",
"Use settings for provider API keys, themes, plugin toggles, model defaults, and context preferences.",
"",
"Related: /help models, /help login, /help plugins, /help find"
],
"related": ["/help models", "/help login", "/help plugins", "/help find"]
},
{
"id": "plugins",
"command": "/help plugins",
"title": "Plugins",
"summary": "Install, update, configure, and diagnose extensions.",
"category": "Plugins",
"topic": "Branch",
"protected": true,
"common": true,
"aliases": ["/plugins help"],
"keywords": ["plugins", "extensions", "marketplace", "hooks", "install"],
"lines": [
"Extend SynapsCLI with skills, commands, tools, hooks, and help entries.",
"",
"Common commands",
" /plugins Open plugin manager",
" /plugins reload Reload installed plugins",
" /extensions status Show loaded extension health",
" /extensions config [id] Show config diagnostics",
"",
"Plugin help may be added by extensions, but protected internal help cannot be replaced."
],
"usage": "/plugins",
"examples": [
{
"command": "/plugins",
"description": "Open marketplace and installed plugin management."
},
{
"command": "/plugins reload",
"description": "Reload installed plugins after manifest changes."
}
],
"related": ["/help doctor", "/help settings", "/help find"]
},
{
"id": "models",
"command": "/help models",
"title": "Models",
"summary": "Choose providers, inspect health, and switch runtime models.",
"category": "Models",
"topic": "Branch",
"protected": true,
"common": true,
"aliases": ["/help model", "/model help"],
"keywords": ["models", "model", "provider", "routing", "health", "favorite"],
"lines": [
"Use models to choose the runtime model and inspect provider health.",
"",
"Common commands",
" /model Open model router",
" /models Open model router",
" /model <name> Switch directly",
" /ping Health-check configured providers",
"",
"Provider keys and defaults live in /settings.",
"",
"Related: /help settings, /help login, /help doctor, /help find"
],
"related": ["/help settings", "/help login", "/help doctor", "/help find"]
},
{
"id": "doctor",
"command": "/help doctor",
"title": "Doctor",
"summary": "Troubleshoot auth, providers, extensions, and runtime health.",
"category": "Diagnostics",
"topic": "Branch",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["doctor", "diagnostics", "health", "troubleshoot", "ping", "logs"],
"lines": [
"Quick checks for common issues.",
"",
"Useful diagnostics",
" /ping Check provider connectivity",
" /status Show usage and reset windows",
" /extensions status Show extension health",
" /extensions config [id] Validate extension config",
" /extensions audit [N] Inspect recent provider audit entries",
"",
"If auth fails, see /help login. If models fail, see /help models.",
"",
"Related: /help login, /help models, /help plugins, /help find"
],
"related": ["/help login", "/help models", "/help plugins", "/help find"]
},
{
"id": "login",
"command": "/help login",
"title": "Login",
"summary": "Authenticate with OAuth or provider API keys.",
"category": "Auth",
"topic": "Branch",
"protected": true,
"common": true,
"aliases": ["/help auth"],
"keywords": ["login", "auth", "oauth", "api key", "token", "provider"],
"lines": [
"SynapsCLI can authenticate with OAuth for supported accounts or provider API keys in /settings.",
"",
"Common commands",
" synaps login Start OAuth login from the shell",
" /settings Add or update provider API keys",
" /status Check account usage when available",
"",
"Secrets are never shown in help output.",
"",
"Related: /help settings, /help models, /help doctor, /help find"
],
"related": ["/help settings", "/help models", "/help doctor", "/help find"]
},
{
"id": "commands",
"command": "/help commands",
"title": "Commands",
"summary": "Core slash command reference and discovery tips.",
"category": "Core",
"topic": "Branch",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["commands", "slash", "reference"],
"lines": ["Use /help for common commands and /help find for the full searchable index."],
"related": ["/help", "/help find"]
},
{
"id": "sessions",
"command": "/help sessions",
"title": "Sessions",
"summary": "Resume, name, compact, and chain conversation sessions.",
"category": "Sessions",
"topic": "Branch",
"protected": true,
"common": false,
"aliases": ["/help session"],
"keywords": ["session", "sessions", "resume", "saveas", "name", "compact", "chain", "conversation history"],
"lines": [
"Sessions keep conversation history so you can resume work later, name important threads, and compact long context.",
"",
"Common commands",
" /sessions Live and saved sessions: pin, close",
" /resume <id> Switch to a saved session",
" /saveas [name] Name or clear the current session name",
" /compact [focus] Summarize history and continue with a smaller context",
" /chain Show compaction history for the current session",
"",
"Use compact before a conversation gets too large; use chain to inspect how summaries were produced.",
"",
"Related: /help compact, /help chain, /help find"
],
"related": ["/help compact", "/help chain", "/help find"]
},
{
"id": "extensions",
"command": "/help extensions",
"title": "Extensions",
"summary": "Inspect extension health, configuration, audits, and contributed commands.",
"category": "Plugins",
"topic": "Branch",
"protected": true,
"common": false,
"aliases": ["/extensions help"],
"keywords": ["extensions", "extension audit", "extension status", "config diagnostics", "plugins", "hooks", "commands", "skills"],
"lines": [
"Extensions are plugin packages that can contribute skills, slash commands, tools, hooks, and help entries.",
"",
"Common commands",
" /extensions status Show loaded extension health",
" /extensions config [id] Show extension config diagnostics",
" /extensions audit [N] Inspect recent provider audit entries",
" /plugins Open plugin manager",
"",
"Extension help appears in /help find, but protected core help cannot be replaced."
],
"usage": "/help extensions",
"examples": [
{
"command": "/extensions status",
"description": "Show loaded extension health."
},
{
"command": "/extensions audit 20",
"description": "Inspect recent provider audit entries."
}
],
"related": ["/help plugins", "/help trust", "/help doctor", "/help find"]
},
{
"id": "trust",
"command": "/help trust",
"title": "Trust and protected namespaces",
"summary": "Understand extension trust, permissions, and protected help and command namespaces.",
"category": "Security",
"topic": "Branch",
"protected": true,
"common": false,
"aliases": ["/help permissions"],
"keywords": ["trust", "trusted", "permissions", "protected namespace", "protected namespaces", "security", "extension trust", "plugin trust"],
"lines": [
"SynapsCLI treats extensions as powerful integrations and keeps core command, alias, and help namespaces protected.",
"",
"What to check",
" • Review extension manifests before enabling tools or hooks",
" • Use /extensions status for loaded extension health",
" • Use /extensions config [id] for configuration diagnostics",
" • Use /extensions audit [N] to inspect recent provider activity",
"",
"Plugins may add help entries, but they cannot shadow protected internal commands like /help, /settings, or /plugins."
],
"usage": "/help trust",
"examples": [
{
"command": "/extensions audit",
"description": "Inspect recent provider activity."
},
{
"command": "/extensions config acme-tools",
"description": "Check configuration diagnostics for one extension."
}
],
"related": ["/help extensions", "/help plugins", "/help doctor"]
},
{
"id": "compact",
"command": "/compact",
"title": "/compact",
"summary": "Summarize history and compact the current conversation context.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": ["/help compact"],
"keywords": ["compact", "summarize history", "summary", "context", "conversation history", "session"],
"lines": [
"Summarize and compact the current conversation so the session can continue with less context."
],
"usage": "/compact [focus]",
"examples": [
{
"command": "/compact",
"description": "Compact the current conversation."
},
{
"command": "/compact keep the auth debugging context",
"description": "Compact while preserving an important focus."
}
],
"related": ["/help sessions", "/help chain"]
},
{
"id": "chain",
"command": "/chain",
"title": "/chain",
"summary": "Show compaction history for the current session.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": ["/help chain"],
"keywords": ["chain", "compaction history", "compact chain", "session history", "summaries"],
"lines": [
"Show the compaction chain for the current session, including previous summaries created by /compact.",
"",
"Use this when you need to understand what context was preserved across compactions."
],
"usage": "/chain",
"examples": [
{
"command": "/chain",
"description": "Show compaction history for the current session."
}
],
"related": ["/help sessions", "/help compact"]
},
{
"id": "extensions-audit-command",
"command": "/extensions audit",
"title": "/extensions audit",
"summary": "Inspect recent extension provider audit entries.",
"category": "Plugins",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["extensions", "extension audit", "audit", "provider activity", "trust", "security"],
"lines": [
"Review recent extension provider activity for diagnostics and trust checks.",
"",
"Use this when an extension behaves unexpectedly or before trusting a new integration."
],
"usage": "/extensions audit [limit]",
"examples": [
{
"command": "/extensions audit",
"description": "Inspect recent provider audit entries."
},
{
"command": "/extensions audit 20",
"description": "Show up to 20 recent audit entries."
}
],
"related": ["/help extensions", "/help trust", "/help doctor"]
},
{
"id": "tools",
"command": "/help tools",
"title": "Tools",
"summary": "Understand tool usage and extension tool access.",
"category": "Tools",
"topic": "Branch",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["tools", "permissions", "bash", "read", "write", "extensions"],
"lines": ["Tools are exposed to the model by the runtime. Extensions may add tools subject to manifest permissions and trust."],
"related": ["/help plugins", "/help doctor"]
},
{
"id": "clear",
"command": "/clear",
"title": "Clear",
"summary": "Reset the current conversation and start fresh.",
"category": "Core",
"topic": "Command",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["clear", "reset", "new"],
"lines": ["/clear resets conversation state and starts a new session."],
"related": ["/help sessions"]
},
{
"id": "model-command",
"command": "/model",
"title": "Model router",
"summary": "Open model picker or switch directly with /model <name>.",
"category": "Core",
"topic": "Command",
"protected": true,
"common": true,
"aliases": ["/models"],
"keywords": ["model", "models", "provider"],
"lines": ["/model opens the model router. /model <name> switches directly."],
"usage": "/model [name]",
"examples": [
{
"command": "/model",
"description": "Open the model picker."
},
{
"command": "/model claude-sonnet-4",
"description": "Switch directly when the model is configured."
}
],
"related": ["/help models"]
},
{
"id": "settings-command",
"command": "/settings",
"title": "Settings command",
"summary": "Open the settings modal.",
"category": "Core",
"topic": "Command",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["settings", "config"],
"lines": ["/settings opens configuration for providers, themes, plugins, and defaults."],
"related": ["/help settings"]
},
{
"id": "sessions-command",
"command": "/sessions",
"title": "Sessions command",
"summary": "Open the sessions modal (live + saved).",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["sessions", "session", "history", "saved", "live", "parked", "daemon", "pin", "close"],
"lines": ["/sessions opens a modal: Live lists every daemon session by state (streaming, waiting, idle, parked) with pin (p) and close (x), plus pins that are not live (waiting/failed, p clears them); Past lists saved conversations (\u2691 = pinned; p pins one into the daemon). A pin comes back after daemon restarts. Works mid-stream."],
"related": ["/help sessions", "/resume"]
},
{
"id": "plugins-command",
"command": "/plugins",
"title": "Plugins command",
"summary": "Open the plugin manager.",
"category": "Plugins",
"topic": "Command",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["plugins", "extensions"],
"lines": ["/plugins opens marketplace and installed plugin management."],
"usage": "/plugins",
"examples": [
{
"command": "/plugins",
"description": "Open the plugin manager."
}
],
"related": ["/help plugins"]
},
{
"id": "status-command",
"command": "/status",
"title": "Status",
"summary": "Show account usage and reset times when available.",
"category": "Diagnostics",
"topic": "Command",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["status", "usage", "auth"],
"lines": ["/status checks account usage for supported providers."],
"related": ["/help doctor", "/help login"]
},
{
"id": "ping-command",
"command": "/ping",
"title": "Ping providers",
"summary": "Health-check configured provider models.",
"category": "Diagnostics",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["ping", "health", "provider", "doctor"],
"lines": ["/ping checks configured provider models and reports health."],
"related": ["/help doctor", "/help models"]
},
{
"id": "stats-command",
"command": "/stats",
"title": "Session stats",
"summary": "Print a session receipt: tokens, cost, cache hit-rate, and savings.",
"category": "Diagnostics",
"topic": "Command",
"protected": true,
"common": true,
"aliases": [],
"keywords": ["stats", "tokens", "cost", "cache", "usage", "savings"],
"lines": [
"/stats shows a formatted session receipt with:",
" - session ID, model, duration, turn count",
" - token totals (input, output, cache read/write + 5m/1h split)",
" - cache hit-rate % and dollar savings vs uncached",
" - total session cost"
],
"related": ["/help status", "/help ping"]
},
{
"id": "quit-command",
"command": "/quit",
"title": "Quit",
"summary": "Exit SynapsCLI.",
"category": "Core",
"topic": "Command",
"protected": true,
"common": true,
"aliases": ["/exit"],
"keywords": ["quit", "exit"],
"lines": [
"/quit or /exit leaves SynapsCLI.",
"Attached to a daemon session, it only detaches: the session stays loaded in the daemon (and a running turn keeps running). /close ends it."
],
"related": ["/close", "/help"]
},
{
"id": "close-command",
"command": "/close",
"title": "Close this session",
"summary": "End this session in the daemon instead of only detaching from it; it can be continued later.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["close", "end", "session", "daemon", "detach", "quit", "unload", "idle"],
"lines": [
"/close saves this session and ends it in the daemon: it leaves `synaps daemon sessions`, every attached client exits, and nothing wakes it again. Resume it with `synaps --attach --continue <id>`.",
"It refuses while closing would stop work in flight: a running turn or compaction, a running worker, or an armed /auto run. /close force closes anyway; it cancels the running workers first and notes each one in the conversation, for whoever continues it.",
"Only the client that owns input can close the session. In-process (no daemon), /close is /quit with the same checks."
],
"related": ["/quit", "/workers", "/keepwarm"]
},
{
"id": "watch-command",
"command": "/watch",
"title": "Watch and steer a subagent",
"summary": "Open a running subagent in its own thread view; Enter there steers it. Alt-Up/Alt-Down (or Ctrl-Up/Ctrl-Down) switch views.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["watch", "subagent", "worker", "agent", "thread", "steer", "observe", "ctrl-up", "ctrl-down", "alt-up", "alt-down", "mission control"],
"lines": [
"Alt-Up (or Ctrl-Up) from the main thread opens the newest subagent (the tray's bottom row) in its own view; more Up walk to older ones. Alt-Down (or Ctrl-Down) walks back down, and past the newest returns to the main thread. Esc also returns to main (it never cancels the main turn there). On macOS, Ctrl-Up/Down are taken by Mission Control by default: use Alt (Option; in Terminal.app turn on \"Use Option as Meta key\") or /watch.",
"/watch lists the subagents you can watch (or opens the only one). /watch <name>, /watch sa_N or /watch N opens one; /watch main goes back.",
"A subagent's view shows what it streams: text, thinking, tool calls and results, live. Scrolling, selection and Ctrl-O act on the view you are in, and the main thread keeps its own scroll position.",
"Enter with text in a running subagent's view steers that subagent (input owner only); slash commands still run as usual. The steer is also noted in the main conversation, so the main agent knows you redirected its worker. A finished subagent's view is read-only and stays watchable for 15 minutes."
],
"related": ["/keybinds"]
},
{
"id": "keepwarm-command",
"command": "/keepwarm",
"title": "Prompt-cache keep-warm",
"summary": "Show or override idle prompt-cache keep-warm for this session: off, auto, or <N>h (pings the API; not /pin).",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["keepwarm", "keep-warm", "cache", "ttl", "prompt cache", "idle", "cost"],
"lines": [
"/keepwarm (or /keepwarm status) shows the mode, the active idle period (next ping, spend vs. bound, whether the cached prefix is unchanged) and this session's keep-warm spend.",
"/keepwarm auto keeps the prompt cache warm while idle until the pings would cost more than the rewrite they prevent, or for at most cache_keepwarm_auto_max_hours (default 24h) after the session went idle. With cache_ttl = 1h honoured by the server: about 19 pings over ~17h on most models (0.1x cache reads); 26 over ~24h on Opus 5.5 / Sonnet 5.5 (0.05x; 39 over ~36h without the cap) and on Fable 5.1 / Mythos 5.1 (0.025x; 79 over ~72h without the cap). With 5m or hybrid (or a 1h setting the server silently downgraded): about 12 pings over ~55 min (0.1x), 24 over ~1.8h (0.05x), 49 over ~3.7h (0.025x). On an already idle session it starts at once; after it stopped at the cost bound, turning it off and on again does not restart it until your next message.",
"/keepwarm 6h applies the same bound and stops 6 hours after the session went idle instead of the auto cap (N = 1–48). /keepwarm off stops it for this session; the choice survives park and daemon reload.",
"Nothing is pinged when nothing is cached (a prompt below the model's cache minimum), when the next turn would roll the context over first, or when one worst-case ping costs more than the rewrite (budgeted thinking on a small prompt).",
"Pings stop by themselves when the next request would differ (/model, /thinking, /system, tool activation, /compact, /clear); read-only commands do not affect them. A new message ends the idle period.",
"Keep-warm spend and tokens are part of the session cost and token totals and labelled separately in the footer and /stats; each ping's spend is saved as soon as it is booked (the labels with the session snapshot). The default comes from cache_keepwarm in config (off unless set).",
"This is the prompt cache, not the session: /pin keeps a daemon session loaded and costs nothing."
],
"related": ["/stats", "/context", "/pin"]
},
{
"id": "pin-command",
"command": "/pin",
"title": "Pin this session",
"summary": "Keep this daemon session loaded: never parked or idle-ended, and the daemon does not idle-exit while it is pinned.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": ["/keep-warm"],
"keywords": ["pin", "unpin", "keep-warm", "park", "idle", "daemon", "loaded", "idle-exit"],
"lines": [
"/pin (or /pin status) shows whether this session is pinned. /pin on pins it, /pin off unpins it; only the client that owns input can change it. /keep-warm on|off is the same command, and synaps --attach --keep-warm pins at attach.",
"A pinned session is never parked, idle-ended or evicted, and the daemon does not idle-exit while any session is pinned. It comes back when the daemon starts again (after reload, daemon stop, idle exit, a crash or a reboot), pinned, with its conversation and its /keepwarm choice. /close and synaps daemon close end it on purpose: then it does not come back. SYNAPS_DAEMON_RESTORE_PINS=0 starts a daemon without bringing pins back (they stay for the next start).",
"From another shell: synaps daemon pin <ID|NAME> [--off]. synaps daemon sessions marks pinned sessions and lists pins that are not live (waiting: journal held by another process / failed: reason); synaps daemon pin <ID> --off clears one, synaps daemon pin <ID> retries it. A pinned session keeps the prompt cache warm (/keepwarm) even with no TUI attached.",
"Not /keepwarm (no dash), which keeps the prompt cache warm by pinging the API and costs money. In-process (no daemon), /pin does nothing: the session ends with the TUI."
],
"related": ["/close", "/keepwarm", "/sessions"]
},
{
"id": "clients-command",
"command": "/clients",
"title": "Clients attached to this session",
"summary": "List every client attached to this daemon session: its name, kind, drive or observe, who owns input, and which one is you.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["clients", "attached", "names", "tabs", "observe", "owner", "input", "who", "as"],
"lines": [
"/clients lists every client attached to this session, one per line: name (#id), kind, drive or observe, then 'owns input' and 'you' where they apply, and how long it has been attached. It works while the agent is streaming.",
"Every client is you (the daemon refuses other users). A name is a label: pick one with synaps --attach --as <name> or SYNAPS_CLIENT_NAME (1-32 letters, digits, - or _). Without one a client gets its kind (tui, attach), and tui-2, tui-3 when that is taken.",
"Names also show in synaps daemon sessions, in 'input owned by tui (#1)' refusals and in the 'input taken over by' notice.",
"In-process (no daemon) there is one client, this TUI."
],
"related": ["/pin", "/sessions"]
},
{
"id": "takeover-command",
"command": "/takeover",
"title": "Take input in this client",
"summary": "Take input ownership of this daemon session from the client that holds it, without re-attaching.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["takeover", "take over", "input", "owner", "read-only", "attach", "client", "steal", "mirror"],
"lines": [
"When several clients are attached to one daemon session, only one owns input; the others are read-only and their prompts are refused. /takeover makes this client the owner in place, like synaps --attach --takeover but without re-attaching. The previous owner is told (\"input taken over\") and becomes read-only.",
"It works mid-turn: the running turn keeps going, and only who may submit, steer, cancel or change settings moves.",
"A client attached with --observe is read-only on purpose and cannot take over; attach without --observe instead. In-process (no daemon) there is only one client, so there is nothing to take over."
],
"related": ["/pin", "/close", "/sessions"]
},
{
"id": "budget-command",
"command": "/budget",
"title": "Turn time budget",
"summary": "Inspect turn limits or explicitly change the wall-clock allowance for future turns.",
"category": "Sessions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["budget", "wall_clock", "time", "exhausted", "timeout", "continue"],
"lines": [
"/budget status shows configured limits, not live usage.",
"/budget time 4h sets a four-hour time allowance for future turns in this runtime only. Use a positive whole number with s, m or h (maximum 24h).",
"This does not persist to config/session storage, start inference, reset context, modify running turns or alter worker budgets and other limits. The local TUI accepts this command while idle, not during streaming.",
"After time exhaustion, history is retained. Send a new prompt to continue with a fresh budget. In /context auto, committed context rollovers start a fresh elapsed-time segment; time expiry forces a durable rollover. Provider-round renewals alone do not reset time.",
"For a persistent foreground limit, set turn_budget.foreground.max_elapsed_secs = 14400 in your active profile config and restart Synaps. Autonomous/watcher and worker config roles remain separate.",
"Local /auto turns use this foreground runtime's budget; /budget is an explicit control command and revokes an active autonomous driver grant. Reauthorize /auto start if needed. With an opted-in driver, wall-clock exhaustion continues retained work on the same model; other budget failures still stop. It never triggers provider fallback."
],
"related": ["/context", "/help sessions"]
},
{
"id": "confirms-command",
"command": "/confirms",
"title": "Extension confirm approvals",
"summary": "Show or revoke the extensions you chose \"Allow all\" for in this session.",
"category": "Extensions",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": ["confirm", "allow all", "approve", "revoke", "consent", "extension"],
"lines": [
"When an extension asks you to confirm a tool call, the dialog names the extension and the tool. \"Allow all from <ext> this session\" auto-approves later confirms from that loaded extension only (any tool), until /new or /confirms reset; reloading or reinstalling the extension clears it. Other extensions still ask, and a block from any extension still wins. Note: subagent tool calls do not run extension before_tool_call hooks today, so extension confirms and blocks do not apply to them at all.",
"/confirms (or /confirms status) lists the extensions with \"Allow all\" armed. /confirms reset revokes them all at once.",
"/new and resuming a session also start with nothing armed. Only the input owner can choose \"Allow all\" (focus the button with Tab or the arrow keys, press Enter, then Enter again to confirm); every attached client is told when it is armed."
],
"related": ["/extensions"]
},
{
"id": "context-command",
"command": "/context",
"title": "Context report",
"summary": "Show system/tool/history sizes and cache prefix changes (metadata only).",
"category": "Diagnostics",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": [
"context",
"cache",
"prefix",
"tokens",
"diagnostics"
],
"lines": [
"/context reports system-prompt, tool, and history counts/bytes, which cache component changed on the last traced request, and trace writer counters. It never shows content."
],
"related": [
"/trace",
"/status"
]
},
{
"id": "trace-command",
"command": "/trace",
"title": "Trace controls",
"summary": "Arm one-request tracing (/trace next) and show trace status.",
"category": "Diagnostics",
"topic": "Command",
"protected": true,
"common": false,
"aliases": [],
"keywords": [
"trace",
"observability",
"telemetry",
"export",
"capture"
],
"lines": [
"/trace next traces exactly the next request (even with telemetry off), then auto-disables.",
"/trace next content additionally captures a redacted copy of the next request body for `synaps trace export --include-content`.",
"/trace status reports mode, persistence path, and counters."
],
"related": [
"/context",
"/status"
]
}
]