kit

Global Flags

All flags can be passed to the root kit command.

Model and provider

Flag Short Default Description
--model -m anthropic/claude-sonnet-latest Model to use (provider/model format)
--provider-api-key — — API key for the provider
--provider-url — — Base URL for provider API
--provider-wire — — Wire protocol for auto-routed providers: openai, openai-compat, anthropic, google (overrides the model database)
--tls-skip-verify — false Skip TLS certificate verification

Session management

Flag Short Default Description
--session -s — Open specific JSONL session file
--continue -c false Resume most recent session for current directory
--resume -r false Interactive session picker
--no-session — false Ephemeral mode, no persistence

Behavior

These flags control Kit’s behavior. When a prompt is passed as a positional argument, Kit runs in non-interactive mode.

Flag Short Default Description
--quiet — false Suppress all output (non-interactive only)
--json — false Output response as JSON (non-interactive only)
--no-exit — false Enter interactive mode after prompt completes
--max-steps — 0 Maximum agent steps (0 for unlimited)
--stream — true Enable streaming output
--compact — false Enable compact output mode
--pick-dir — false Choose a working directory with a picker before starting. The daemon uses this flag for any detachable session that has no directory of its own — kit attach --new, or a remote client
--no-daemon — false Run in this terminal even when the kit daemon could host a detachable session. KIT_NO_DAEMON=1 does the same; daemon-mode in the config file is the standing preference
--auto-compact — false Compact proactively when near the context limit (reactive compact-and-retry on provider overflow errors is always on)

Context

Flag Short Default Description
--bare — false No project context — skip all automatic discovery

--bare starts Kit without reading anything from the directory it runs in, so you can ask a question without first loading whatever project you happen to be standing in. It disables:

Your home ~/.kit.yml still loads, so API keys and your default model keep working, as do KIT_* environment variables and an explicit --config file.

Anything you name on the command line still applies — --extension, --skill, --prompt-template, --system-prompt and @file attachments are unaffected. Bare mode suppresses what Kit finds on its own, never what you asked for.

Core tools stay enabled and the working directory is unchanged, so the agent can still read files when you ask it to. Combine with --no-core-tools for a pure question-answering session:

kit --bare "why does a TLS handshake fail with an SNI mismatch"
kit --bare --no-core-tools "explain the CAP theorem"
kit --bare -e ~/my-ext.go "..."   # explicit extension still loads

Because a bare session is not tied to a directory, bare sessions share a single store rather than the usual per-directory one. kit --bare -c resumes your last bare conversation from anywhere on the filesystem.

--bare cannot be set from a config file. It exists to ignore project configuration, so allowing a project config to enable it would be self-defeating.

Tools

Flag Short Default Description
--shell — bash Shell the shell tool and the interactive ! commands run through: the shell plus its own leading arguments, e.g. /bin/dash or "busybox ash"
--no-core-tools — false Disable all built-in core tools
--include-core-tools — — Comma-separated list of core tools to include (mutually exclusive with --exclude-core-tools)
--exclude-core-tools — — Comma-separated list of core tools to exclude (mutually exclusive with --include-core-tools)
--codemode — true Use --codemode=false to disable. Enable code mode: the model can run JavaScript that calls the other tools
--mcp — — Add an MCP server for this run (repeatable). name=command args... starts a local stdio server; name=https://... [-H "Key: Value"] connects to a remote server

One-off MCP servers

--mcp adds a server without a config file. Each value is name=spec. When spec starts with http:// or https:// Kit connects to a remote server; otherwise spec is a command line for a local stdio server. Quotes and backslashes group arguments the way a shell does, so an argument can contain spaces.

kit --mcp 'browser=lightpanda mcp' "open example.com and read the title"
kit --mcp 'docs=https://mcp.example.com/mcp' "..."
kit --mcp 'fs=npx -y @modelcontextprotocol/server-filesystem "/my dir"' \
    --mcp 'browser=lightpanda mcp' "..."

Headers for remote servers

A remote spec can carry HTTP headers after the URL, curl style. Use -H or --header, once per header, with the header as one "Key: Value" string. Header values support the same env-substitution as the config file, so an API key stays out of the command line and out of the shell history:

kit --mcp 'docs=https://mcp.example.com/mcp -H "Authorization: Bearer ${env://API_KEY}"' "..."
kit --mcp 'docs=https://mcp.example.com/mcp -H "X-Api-Key: ${env://KEY}" -H "X-Tenant: acme"' "..."
kit --mcp 'docs=https://mcp.example.com/mcp --header="X-Api-Key: secret"' "..."

${env://VAR} fails at startup when VAR is not set; use ${env://VAR:-default} for an optional value. Headers apply to remote servers only — after a local command, -H is passed to that command unchanged.

Headers are the credential for that server, so Kit switches OAuth off for it. Otherwise Kit would try dynamic client registration first and fail before it sends the headers. Two switches override this:

Argument Effect
--oauth Keep OAuth on, even with headers (for a server that needs OAuth plus a routing header)
--no-oauth Switch OAuth off without headers (for a public server)
kit --mcp 'docs=https://mcp.example.com/mcp -H "X-Tenant: acme" --oauth' "..."
kit --mcp 'pubmed=https://mcp.example.com/mcp --no-oauth' "..."

A flag server with the same name as a mcpServers entry in .kit.yml replaces that entry for the run. For environment, allowedTools and the other per-server fields, use the config file.

Extensions

Flag Short Default Description
--extension -e — Load additional extension file(s) (repeatable)
--no-extensions — false Disable all extensions
--prompt-template — — Load a specific prompt template by name
--no-prompt-templates — false Disable prompt template loading

Skills

Flag Short Default Description
--skill — — Load skill file or directory (repeatable)
--skills-dir — — Scan this directory directly for skills (overrides auto-discovery)
--skill-disable — — Hide a skill from the model catalog by name (repeatable); still usable via /<name>
--no-skills — false Disable skill loading (auto-discovery and explicit)
--no-agents — false Disable named agent discovery (built-ins and definition files)

Generation parameters

Flag Short Default Description
--max-tokens — 8192 Base cap for output tokens. Auto-raised per-model up to 32768 when the model’s catalog ceiling is higher and no explicit value is set.
--temperature — 0.7 Randomness 0.0–1.0
--top-p — 0.95 Nucleus sampling 0.0–1.0
--top-k — 40 Limit top K tokens
--stop-sequences — — Custom stop sequences (comma-separated)
--frequency-penalty — 0.0 Penalize frequent tokens (0.0–2.0)
--presence-penalty — 0.0 Penalize present tokens (0.0–2.0)
--thinking-level — off Model-specific reasoning effort (/thinking lists choices). off omits effort; none is literal

System

Flag Short Default Description
--config — ~/.kit.yml Config file path
--system-prompt — — System prompt text or file path
--debug — false Enable debug logging