Config Reference

This reference lists the Open Interpreter settings users most often need. The source of truth for every field is the generated schema in codex-rs/core/config.schema.json.

Top-Level Keys

KeyValuesPurpose
modelstringDefault model id.
model_providerprovider idProvider entry used for model.
model_reasoning_effortminimal, low, medium, high, xhighReasoning budget for supported models.
model_reasoning_summaryauto, concise, detailed, noneHow much reasoning summary to show.
model_verbositylow, medium, highVerbosity for supported Responses API models.
approval_policyuntrusted, on-request, neverWhen to ask before running commands.
approvals_revieweruser, auto_reviewWho reviews eligible approval prompts.
sandbox_moderead-only, workspace-write, danger-full-accessLocal command sandbox.
default_permissionsprofile nameSelects a beta permissions profile.
personalityfriendly, pragmatic, noneTUI communication style.
web_searchcached, live, disabledWeb search behavior.
log_dirpathDirectory for logs.
file_openervscode, vscode-insiders, windsurf, cursor, noneEditor used for file citations.
harnessstringOpen Interpreter harness compatibility mode.
harness_guidancebooleanAllow OI guidance inside harness mode.
check_for_update_on_startupbooleanEnable managed standalone update checks.

Feature Flags

KeyDefault posturePurpose
features.appsoffApp/connectors surface.
features.pluginsoffPlugin bundles.
features.hooksonLifecycle hooks.
features.memoriesoffPersistent memory generation/use.
features.multi_agentonSubagent tools and /agent.
features.shell_toolonBuilt-in shell command tool.
features.shell_snapshotonShell environment snapshotting.
features.unified_execon except where unsupportedPTY-backed exec tool.
features.undooffUndo support where available.
features.network_proxyoffSandboxed network proxy controls.

Provider Tables

[model_providers.example]
name = "Example"
base_url = "https://api.example.com/v1"
env_key = "EXAMPLE_API_KEY"
wire_api = "responses"
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 300000

Provider auth can also be command-backed:

[model_providers.example.auth]
command = "example-token"
args = ["print"]
refresh_interval_ms = 300000
timeout_ms = 5000

Sandbox Tables

[sandbox_workspace_write]
network_access = false
exclude_tmpdir_env_var = false
exclude_slash_tmp = false
writable_roots = ["/tmp/project-cache"]

For finer-grained access, use permissions profiles instead of mixing both systems in one active config.

Permission Profiles

default_permissions = "project-edit"

[permissions.project-edit.filesystem]
":minimal" = "read"

[permissions.project-edit.filesystem.":workspace_roots"]
"." = "write"
"**/*.env" = "deny"

[permissions.project-edit.network]
enabled = true

[permissions.project-edit.network.domains]
"api.openai.com" = "allow"
"*.github.com" = "allow"

See Permissions for the complete model.

MCP Tables

[mcp_servers.docs]
command = "docs-mcp"
args = ["--stdio"]
env = { DOCS_TOKEN = "env:DOCS_TOKEN" }
startup_timeout_sec = 10
tool_timeout_sec = 60
required = false
enabled_tools = ["search", "read"]
disabled_tools = ["delete"]
default_tools_approval_mode = "prompt"

[mcp_servers.docs.tools.search]
approval_mode = "approve"

HTTP MCP servers use url, bearer_token_env_var, http_headers, and env_http_headers.

Hooks

Hooks can be configured inline:

[[hooks.PreToolUse]]
matcher = "^Bash$"

[[hooks.PreToolUse.hooks]]
type = "command"
command = "python3 .openinterpreter/hooks/pre_tool_use.py"
timeout = 30
statusMessage = "Checking command"

Or in hooks.json next to the active config layer. See Hooks.

Agents

[agents]
max_threads = 6
max_depth = 1
job_max_runtime_seconds = 1800

[agents.explorer]
description = "Investigate code and report findings without editing."
model_reasoning_effort = "medium"
sandbox_mode = "read-only"

See Subagents.