Skip to main content
karta.jsonc is an optional file that tunes Karta’s behavior without touching your agent definitions. It is JSONC (JSON with comments and trailing commas). Every key is optional, and the file lives at ./karta.jsonc in the agent project folder.

Choose the right config file

Full example

karta.jsonc

Behavior summary

cli

cli.hidden_event_types
string[]
Event types the CLI should not render - e.g. ["system", "step_start"]. Useful to quiet noisy harness internals.
cli.input_required_policy
string
default:"prompt"
How the CLI handles input_required approval prompts: prompt, deny, approve_once, approve_session, or error.
cli.input_required_hidden_policy
string
default:"deny"
The auto-decision applied to approval prompts that are hidden (so the user is not asked for events they cannot see).

harness.claude

harness.claude.idle_timeout_seconds
integer
default:"600"
How long the harness may stay idle before it is shut down.
harness.claude.thinking_budget_tokens
integer
Optional extended-thinking budget for turns that request reasoning.
harness.claude.permission_intercept
boolean
default:"false"
Whether Karta intercepts the harness’s approval prompts (vs. letting the harness handle them).
harness.claude.agent_command
boolean
default:"false"
Enables the agent command surface.

runtime

runtime.permission_mode
string
default:"interactive"
How a deployed agent treats approvals for tools that are not on the .claude/settings.json allowlist. interactive pauses each off-allowlist tool as a tool-permission prompt the end user answers over the API (approve_once, approve_session, deny); autonomous auto-approves for the session (maps to approve_session). Set autonomous for unattended/headless deployments that should never pause - it bypasses the approval prompt entirely, so reserve it for trusted agents.

profile

profile.name
string
The default human participant name for CLI sessions.
profile.display_name
string
A friendly display name for that participant. Falls back to your OS user if unset.
karta.jsonc governs run-time behavior; karta.toml governs publish/build. OpenCode’s own harness config lives separately in .opencode/opencode.jsonc.

Verify the file is being read

Run a one-shot local turn with an explicit config path:
To check the deployed approval mode from Python, create a session and inspect its permission_mode:
If a value has the wrong type or is outside the allowed set, Karta ignores that value and uses the default shown above.