Docs
Jan Agent
Slash Commands

Slash Commands

Type / in the input to filter the list as you type. Enter runs the highlighted command. The list also opens while the agent is working. There, Esc closes the list first, and only a second Esc cancels the run. The list stays closed while a permission prompt is waiting for your answer.

The filter is fuzzy: it matches the tail of a command or skill name, a subsequence of it, or a close typo, so you rarely need to type a name exactly. /rse finds /resume, and typing /simplifyer still lines up the simplifier in /code-simplifier. Built-ins, plugin commands, and skills all join the same list, ranked by how closely they match the start of the name. The first one or two characters match strictly as a prefix, so a barely-started buffer stays tight instead of surfacing every name that merely contains those letters.

Installed skills from every scope (Skills: project, plugin, and user ~/.jan/skills) join the same popup: typing /deploy matches a skill named deploy (magenta row, alongside the cyan commands), Tab completes it, and Enter tells the agent to follow the skill. Disabled skills (via [skills].enabled) are not offered, and neither are user-invocable: false skills - those stay agent-invoked only.

Skills accept arguments, and there are two ways to invoke one:

  • /deploy staging - short form; arguments after the name are passed to the skill. If the name collides with a built-in command, the command wins.
  • /skill:deploy staging - explicit form, never collides with a command, and also works mid-prompt: fix the auth flow /skill:deploy harden runs the skill with the surrounding prose as its arguments.

Either form loads the skill's full instructions into the conversation (no separate fetch step), announces the skill's folder so bundled files resolve relative paths, and renders one compact [skill:deploy] row in the transcript.

Session

CommandDescription
/newStart a new session
/clearClear the conversation
/threadsList saved threads for this project
/resume [id]Resume a thread. Bare: pick interactively
/forkBranch this session at a past message into a new thread, keeping this one
/treeSaved threads as a fork tree. Enter resumes one
/worktreeThe dedicated checkout this session works in, and what changed there
/quitExit

See Sessions.

Working

CommandDescription
/goal [condition|clear]Keep working until a condition is met. Bare: status
/plan [exit|text]Enter read-only plan mode, optionally with a first message
/todo [add [phase|] text | clear]Open the todo editor, append an item, or drop all
/compactSummarize older turns to free up context
/contextShow what is filling the context window, by category. Opens a readout docked above the input, live while the turn keeps running; Esc or q closes it
/usage [session|run|account|daily|requests|limits|<execution-id>]Bare: an overview of both answers -- this session's estimate over your account's recorded spend, each labelled with its source and never added together. The session half draws immediately; the account half fills in when the read lands, or says why it could not. session shows the local estimate alone: total tokens and estimated cost, then the costliest models behind it, priced from what the provider publishes (a model it publishes no price for is listed as such rather than counted as free); m expands the model list past the top few. The other views read what the provider actually recorded, each leading with the figure it was opened for -- account spend, the newest day, whether spending is allowed -- with breakdowns folded behind the same m. Reported amounts print exactly as the provider sent them, so they never read as a local estimate. Same docked readout as /context, and only one is open at a time; the input field is inactive while it is up
/cancel [N]Cancel queued messages. Bare: all, or an index
/agentsInspect running subagents: each one's stats and current activity. Select one and press m to message it or x to stop it
/shells (alias /jobs)Inspect and stop background shell commands the agent left running

See Run modes, Goals and todos, and Context and compaction.

Setup

CommandDescription
/model [id]Switch model. Bare: pick interactively. Opening the picker re-lists each provider's models once per session; Ctrl+R inside it re-lists them again on demand
/effort [low|medium|high]Set reasoning effort. Bare: show current; low is faster, high thinks deeper
/mcpList, toggle, add, edit, and remove MCP servers; Enter opens a server's detail screen, where you can list its tools and sign in to it
/plugin [list|install <spec>|remove <name>|search [query]|setup [name]]Install and manage plugins. Installation opens setup automatically: masked API-key entry, then confirmation to enable declared MCP servers and sign in when required. Bare setup opens a single-plugin picker; setup <name> resumes that plugin directly without manual MCP configuration or restarting Jan
/skillsList every skill Jan can see from this project, with its scope (project, plugin, user, built-in), invocation flags, and whether it is disabled. A skill hidden by a same-named higher-precedence one is marked shadowed by <scope>
/reload [config|plugin|skills|system-prompt]Re-read on-disk state into the running session without a restart (bare: all). config re-applies the project's agent.toml limits - context_window, compaction_ratio, compaction_reserve_tokens, max_tokens, send_reasoning, [budget].max_tokens - to the next run and lists what changed; the model, [tools], [provider] and [budget].max_usd still need a restart. plugin/skills re-scan and rebuild the catalog, reporting added/removed/changed entries. system-prompt re-reads the project instructions (AGENTS.md, or a legacy JAN.md where a directory has one), which apply on the next run
/loginSign in to Tokamak and save the API key
/config [what you want]View provider config (~/.jan/config.toml). With words, it is /vibe-setting
/terminal-setupConfigure this terminal so Shift+Enter inserts a newline and, on macOS, Option+Delete deletes a word. Writes the terminal's own config where it can (VS Code, kitty, Ghostty, tmux) and prints the manual step where it cannot. Idempotent
/settings [what you want]With words (other than the max_parallel_subagents N shortcut), it is /vibe-setting. Bare, it opens the menu to edit settings in an interactive menu - the project's agent.toml ([agent] knobs context_window, compaction_ratio, compaction_reserve_tokens, max_tokens, max_parallel_subagents, [budget] limits, the [tools] / [skills] toggles) and user-wide ~/.jan/config.toml keys such as wave and ask_timeout_secs in the one list (Enter edits a row, x resets to default, Esc cancels, clearing the field unsets - except wave, where an empty field is the "no sweep" value and x restores the default 👋). The leading providers row opens a manager for OpenAI-compatible providers in ~/.jan/config.toml: a adds, Enter edits, d twice deletes. max_parallel_subagents N works as a one-shot shortcut. Writes apply on the next session (or after /reload config for the [agent]/[budget] limits), except cosmetic ones like wave that apply immediately
/vibe-setting <what you want>Say what you want in plain words and the agent proposes the settings changes that get it. /settings <words> and /config <words> do the same. See below

/vibe-setting


/vibe-setting I work on huge repos with Opus, stop compacting so often and show me its thinking

The session's model receives the /settings keys (name, file, type, default, current value, what it does) and your sentence, in one request of its own. The conversation is not included, and nothing is added to it. The model answers with a list of changes. Jan checks each one with the same rules /settings uses, then shows a diff:


agent.toml (this project)
context_window 128000 -> 1000000 Opus has a 1M window
compaction_ratio 0.8 -> 0.9 compact later
show_reasoning default (false) -> true
Apply? [y/N]

Nothing is written until you press y. Enter, n or Esc cancels. Accepted changes go through the /settings writer, and the note that follows says when each one applies:

KeysApplies
waveNow
context_window, compaction_ratio, compaction_reserve_tokens, max_tokens, send_reasoning, budget.max_tokensAfter /reload config, from the next run
Everything else (max_parallel_subagents, tools.default, show_reasoning, ...)When Jan restarts
  • It only changes /settings keys. The model, providers, API keys, MCP servers and skills are out of scope; when a request needs one, the reply names the command to use (/model, /login, ...).
  • It never touches credentials. claude_code_alias is not offered.
  • A change that loosens tool permissions (tools.default toward allow) needs yes typed out, not a single key.
  • A key it doesn't know, or a value outside its range, is listed as refused and never written.
  • When the request is ambiguous ("make it faster"), it asks a question instead of guessing. Nothing is written.

It runs only while the agent is idle.

See Providers, MCP, Plugins, and Keybindings.

Other

CommandDescription
/helpShow available commands and keyboard shortcuts
/updateInstall the latest published build. Takes effect on restart

Bare /config is read-only. To change providers, use jan config set from the shell - see Providers.