Repository navigation
Guides User Troubleshooting
When things go wrong.
The CLI auto-rejected the native AskUserQuestion / ExitPlanMode tools. Set
KANNA_MCP_TOOL_CALLBACKS=1 and restart, which routes those prompts through
Kanna's own durable approval protocol instead — see
Security.
Almost certainly KANNA_HOME. It is not a real variable — Kanna has never
read it, so a container that set ENV KANNA_HOME=/data and mounted a volume
there wrote its chats to the image's own home directory and lost them.
The data directory is always $HOME/.kanna. Set HOME instead; see
Docker and
Self-host basics. The same applies to
KANNA_PORT and KANNA_PASSWORD, which are the --port and --password
flags.
Check its status in Settings → Providers. A token marked error is skipped
permanently — unlike limited, it does not heal on its own. Read
lastErrorMessage, fix the cause (usually a revoked or mistyped credential),
then re-enable it. See OAuth Pool Admin.
Kanna binds a token per chat. Send a new turn to trigger a re-pick from the pool. If every token is limited, the pool has nothing eligible — add another or wait out the reset.
The context window probably fell back to 200k. The 1M window is a per-chat toggle on models that offer it, not a separate model (Providers & Models). If you added a custom model entry in Settings → Models with the same id as a built-in, check that its context-window option is still set — Kanna logs a warning whenever the resolved window is not the requested one.
A loop wakes on the previous iteration finishing, so a failed or interrupted turn can leave nothing to wake it. Ask the agent to resume it, or check the Progress panel in the chat footer for the last recorded chunk — the tracking file is the durable record, so nothing is lost. See Loops.
A run is a whole agent turn, so a schedule faster than the work takes will spend most ticks skipping. Consecutive skips collapse into one card with a count. Pick a cadence with the work in mind — see Cron Jobs.
React error #185 — usually a store selector returning a fresh reference on every
call (an inline ?? []). Please file a bug with the chat URL.
The default strategy installs from npm and exits for the supervisor to restart;
it needs no pm2 config. If you set KANNA_RELOADER=pm2 you must also set
KANNA_REPO_DIR, or startup fails outright. See pm2.
Known iOS quirk. Kanna applies font-size: 16px to inputs to prevent zoom and
overscroll-behavior-y: contain to prevent pull-to-refresh. If you still see
issues, report with the iOS version.
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