Skip to content

Features Slash Commands

github-actions[bot] edited this page Nov 9, 2026 · 2 revisions

/clear, /compact and /cron are Kanna's own — plus how the picker merges them with the skills and commands on disk.

The composer's / picker lists three kinds of thing: Kanna's own built-in commands, and the Claude Code skills and slash commands it finds on disk.

The three built-ins

Command Does
/clear Clear conversation history and free up context
/compact [instructions] Compact history, optionally focused on what you name
/cron … Schedule a recurring instruction

These are handled by Kanna, not forwarded to the model as text.

Note

A built-in must be the whole message

/clear clears. /clear now does not — it is sent as an ordinary prompt.

That is deliberate: silently discarding the rest of what you typed would be worse than treating an unrecognised line as a prompt. If you meant to clear, send /clear on its own.

Typing one mid-turn queues it like any other message, so it runs when the current turn finishes rather than interrupting it.

/clear

Starts no turn at all. It drops the session token for every provider, stops the Codex process if one is running, and marks the transcript with a context-cleared divider.

Stopping the Codex process is not incidental — Codex reuses a live session for the same directory regardless of the token, so clearing the token alone would have no effect on the next turn.

Your transcript is not deleted. You keep reading it; the model starts fresh from the divider.

/compact

Summarises the conversation so far and continues from the summary. Optionally say what to keep:

/compact focus on the auth refactor, drop the CSS debugging

On Claude and OpenRouter the command goes to the CLI as-is. Codex has no compaction request of its own, so Kanna runs the summarisation itself and writes the result into the transcript in the same shape.

If the compaction errors, is cancelled, or comes back empty, nothing is committed — you keep the conversation you had.

You rarely need it: the Claude agent compacts on its own when the context window fills, and the meter in the composer shows how close you are. Kanna's own automatic compaction is off by default so the two never race; KANNA_PROACTIVE_COMPACT=enabled turns it back on if you have disabled the CLI's.

/cron intercepts even when it is wrong

/cron is the deliberate exception to every rule above: any message whose first token is /cron is intercepted, valid or not.

Sending a mistyped schedule to the model as prompt text would silently arm nothing, and you would find out when the job never ran. So an invalid line produces an error card showing the line you typed, what is wrong with it, and — where the fix is unambiguous — a corrected command ready to send. Where it is not, the agent is asked to repair it.

See Cron Jobs for the grammar and schedules.

Claude Code's built-in commands

In Claude and OpenRouter chats, and chats on a custom Anthropic-compatible endpoint, the picker also lists Claude Code's own built-in commands, such as /doctor, /context, /init and /security-review. Picking one sends it to the Claude Code CLI as you typed it. Commands that open an interactive terminal panel are not offered, because the CLI cannot show them inside Kanna.

Kanna learns the list from the CLI each time a Claude session starts and keeps it in its data folder, so after a restart the commands are already in the picker. Before the very first Claude session the list is empty. Codex chats do not show these commands, because Codex cannot run them.

When a skill on disk shares a name with a built-in command, Claude runs the built-in. The picker shows the built-in first.

A built-in command such as /doctor only runs when it is the first thing in your message. Written mid-sentence ("run /doctor …"), it is plain text, and the model is not allowed to start it for you.

Skills and commands from disk

The picker also lists Claude Code skills and slash commands found on disk, including ones installed by plugins, so they are one keystroke away. They work on every provider:

  • Claude and OpenRouter resolve /name themselves, as the Claude Code CLI does.
  • Codex does not, so Kanna expands the command before sending it. A command file becomes its body with $ARGUMENTS and $1–$9 filled in; a skill is sent as a pointer to its SKILL.md with your arguments. The transcript still shows the line you typed, with a note that it was expanded.
  • Codex also gets a roster of your skills in its instructions, so it can pick one up on its own when it fits, the way Claude does.

Shell lines (!`cmd`) and @path references inside a command are not run during expansion. They are passed on for the agent to run or read with its own tools.

A project command named clear will not be reachable. Dispatch intercepts that name first, so it is dropped from the listing rather than shown and ignored. Rename it.

Clone this wiki locally