Skip to content

CLI Usage

Keen Code provides slash commands (prefixed with /) for controlling the agent. Type / and press Tab to see command suggestions.

Command Reference

Command Description
/btw <question> Ask a quick side question without adding it to the main conversation
/help Show available commands
/model Change provider or model
/allow-permission <tool_names...> Always allow these tools without prompting
/reset-permission <tool_names...> Reset tool permissions to Keen's default mechanism
/thinking <effort> Set thinking effort for the current model
/show-thinking [on\|off] Show, hide, or inspect thinking token display
/sessions or /resume Open the saved-session picker for the current directory
/skills [list\|reload] List or reload skills
/skills <name> [enable\|disable] Enable or disable a skill
/<skill-name> [args...] Activate an enabled skill
/compact [prompt] Compact conversation context; provide a prompt to guide what to retain
/clear or /new Clear the current session and start a new one
/logout Sign out of the current OAuth provider
/exit Quit Keen Code

/btw <question>

Asks a quick side question in a separate overlay without adding the question or answer to the main conversation. Use it for short clarifications that should not steer the active task.

/btw What does this error mean?

Behavior:

  • Uses the current conversation as read-only context
  • Runs without tool access
  • Works even while the main assistant response is streaming
  • Press Esc to close the overlay and return to the main conversation
  • Running /btw with no question reopens the side-question history if one exists; otherwise Keen shows usage help

/help

Displays a formatted list of built-in slash commands with descriptions.

/help

/model

Opens an interactive model selector to change the AI provider and model. Use this command when you want to:

  • Switch between providers (Anthropic, OpenAI, Google AI, etc.)
  • Change to a different model within the same provider
  • Configure API keys for a provider
  • Configure an optional custom base URL for API-key providers that support it
  • Sign in to OAuth providers such as Codex (ChatGPT OAuth)
/model

Navigation:

Key Action
/ or k / j Move through provider, model, or thinking-effort lists
Enter Select the highlighted item or confirm input
Esc Cancel model selection

API keys are masked while typed. If an API key already exists for the provider, press Enter on an empty API-key prompt to keep it.

/allow-permission <tool_names...>

Always allow the listed tools without prompting. The setting is saved to .keen/permissions.json in the working directory and takes effect immediately.

/allow-permission bash                  # Always run bash without prompting, including dangerous commands
/allow-permission write_file edit_file  # Allow multiple tools at once

Running /allow-permission with no arguments prints usage and lists the available tool names.

Notes:

  • allow-permission bypasses the interactive prompt but the filesystem guard still applies — the agent cannot reach system directories, .gitignored files, or dotfiles under $HOME regardless of this setting.
  • For bash, non-dangerous commands are already auto-granted; the only effect of allowing it is suppressing the prompt for dangerous commands.
  • Settings are project-scoped and do not affect other working directories.

/reset-permission <tool_names...>

Removes the project-level allow setting for the listed tools, falling back to Keen's default permission mechanism.

/reset-permission bash
/reset-permission write_file edit_file

Running /reset-permission with no arguments prints usage and lists the available tool names.

/thinking <effort>

Sets the thinking effort level for the current model. The accepted values come from the selected model, not just the provider. If the current model does not support configurable thinking, Keen shows an error.

Common supported efforts include:

Provider/model family Efforts
Anthropic Claude Opus/Sonnet low, medium, high, max
OpenAI / Codex GPT models none, low, medium, high, xhigh
Google AI Gemini Pro low, medium, high
Google AI Gemini Flash / Flash-Lite minimal, low, medium, high
DeepSeek V4 off, high, max
Z.ai GLM enabled, disabled
OpenCode Go selected models varies by model, including enabled/disabled or off/high/max
/thinking high

If no effort is specified, or the effort is invalid for the current model, Keen prints the valid options.

/show-thinking [on|off]

Controls whether thinking/reasoning tokens are displayed in the output.

/show-thinking on   # Show thinking tokens
/show-thinking off  # Hide thinking tokens
/show-thinking      # Show the current setting

The setting is saved in Keen's global config.

/sessions / /resume

Opens the saved-session picker for the current working directory. Sessions are stored in ~/.keen/sessions/ and namespaced by directory.

/sessions
/resume

Navigation:

Key Action
/ or k / j Move through sessions
Enter Resume the highlighted session
Esc Close the picker

If there are no saved sessions for the directory, Keen prints a message instead of opening the picker.

/skills [list|reload|<name> enable|disable]

Manages skill plugins. Without arguments, lists all available skills.

/skills
/skills list              # List all skills
/skills reload            # Reload skills from disk
/skills <name> enable     # Enable a skill
/skills <name> disable    # Disable a skill

Skills are discovered from:

  • <working-dir>/.agents/skills/
  • <working-dir>/.keen/skills/
  • ~/.agents/skills/
  • ~/.keen/skills/
  • Bundled skills embedded in the binary

Skills are enabled by default unless disabled in the skills config.

/<skill-name> [args...]

Enabled skills can be activated like slash commands:

/review
/review docs/cli-usage.md

When a skill is activated with a slash command, Keen reads that skill's SKILL.md, substitutes arguments into the skill body using $ARGUMENTS, $1, $2, etc., and injects the processed body into the conversation as an activation message. See docs/skills-system.md for the skill file format.

This is different from model-driven skill use. Enabled skills are also listed in the system prompt with their descriptions and SKILL.md paths, so the LLM may decide a skill is relevant and read that file itself with the read_file tool. In that case, the slash command was not used, no slash-command argument substitution occurs, and the skill instructions arrive through the tool result instead of a pre-injected activation message.

The persistence is also different across turns. A slash-activated skill is injected as a conversation message, so its processed instructions remain in retained conversation history. A model-read SKILL.md is just a tool result for the active assistant turn; after a normal turn finish, Keen replaces raw tool traffic with compact turn memory, so the next turn may need to read the skill file again if those instructions are still needed.

Skill names participate in slash-command autocomplete alongside built-in commands.

/compact [prompt]

Triggers context compaction to reduce conversation history while preserving important information. Optionally includes a prompt to guide what to retain.

/compact
/compact Focus on the recent API changes

Compaction requires an initialized LLM client. While compaction is running, press Esc to cancel it.

Compaction is useful when context is filling up and you want to summarize the conversation before continuing. Keen may also suggest Try /compact in the status line when context usage is high.

/clear / /new

Clears the current session and starts fresh. This clears:

  • Conversation history
  • Turn memory
  • Session state
  • Session-scoped permission approvals
  • Current input history state
/clear
/new

/logout

Signs out of the current OAuth provider. This is useful for providers that use browser-based OAuth, currently Codex (ChatGPT OAuth). It removes stored OAuth credentials and clears the active LLM client.

/logout

If the current provider does not use OAuth, Keen shows an error.

/exit

Quits Keen Code.

/exit

File Mentions

Use @ mentions to reference files in prompts. Type @ followed by part of a filename or path, then use autocomplete to insert a match.

Review @docs/cli-usage.md

File mention autocomplete:

  • Starts when @<token> appears at the beginning of input or after a space
  • Searches for relative paths whose names contain the token
  • Respects Keen's filesystem guard and ignored/blocked paths
  • Inserts the selected path as @path with a trailing space

Autocomplete

Type a partial slash command and press Tab to see suggestions:

/mo<Tab> → /model
/th<Tab> → /thinking

Autocomplete supports:

  • Built-in slash commands, including /btw
  • Enabled skills as slash commands
  • File mentions with @<token>

When suggestions are visible:

Key Action
/ Move through suggestions
Tab Accept the highlighted suggestion
Enter Accept the highlighted suggestion
Esc Hide suggestions when no response is streaming

Slash-command autocomplete matches command prefixes case-insensitively. Command execution itself uses the command names shown above.

Keyboard Shortcuts

These shortcuts are available in the REPL:

Shortcut Action
Enter Submit the current input
Shift+Enter Insert a newline in the input box
Ctrl+C Clear non-empty input; quit when input is empty; copy selected text when a selection is active
Ctrl+D Clear non-empty input; quit when input is empty
Esc Interrupt an active response; close /btw; cancel compaction/model/session pickers; hide suggestions; clear selections
Tab Show or accept autocomplete suggestions
/ Navigate input history when the cursor is at the top/bottom of input; otherwise move the cursor; scroll output when history cannot move
PageUp / PageDown Scroll output by a half page
Home / End Jump to top/bottom of output

Mouse Selection

Keen supports mouse selection in the output and input areas:

Action Result
Click and drag Select text
Double-click Select word
Triple-click Select line
Ctrl+C / Cmd+C with a selection Copy selected text
Esc Clear selection