Repository navigation
Features Slash Commands
/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.
| 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.
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.
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 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.
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.
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
/namethemselves, as the Claude Code CLI does. -
Codex does not, so Kanna expands the command before sending it. A command
file becomes its body with
$ARGUMENTSand$1–$9filled in; a skill is sent as a pointer to itsSKILL.mdwith 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.
This wiki is generated from wiki/src/content/docs in cuongtranba/kanna.
Edit the docs there: changes made on this wiki are overwritten on the next sync.
The same docs are published at https://kanna-wiki.lowbit.link.
Getting Started
Features
- Providers & Models
- Chat & Transcript
- Generative UI
- Projects & Sessions
- Boards
- Multi-repo Stacks
- Slash Commands
- Cron Jobs
- Loops
- Beacons
- Kanna Plugins
- Package Auto-Update
- Advanced
- Security
Guides
- User Guide
- Contributing
- Ops & Self-Host
Sharing
Reference