Cook
DocsConfiguration reference

Configuration reference

This file ships with the CLI and is extracted to ~/.cook/docs/user-guide/26-config-reference.md on launch. It is the complete field list for config.toml, managed_config.toml, and requirements.toml. For conceptual guidance see 05-configuration.md.

How to configure

Three files configure Grok Build, and they are written by different people.

File Who writes it Where it lives Use it to
config.toml The developer ~/.cook/config.toml, and .grok/config.toml in a project Set personal defaults. Anything here can be changed by the person using the machine.
managed_config.toml You, through the console or a deployment tool /etc/grok/managed_config.toml, or $GROK_HOME/managed_config.toml Ship a starting point to a fleet. A developer's own file overrides it.
requirements.toml You, signed /etc/grok/requirements.toml, macOS device management, or $GROK_HOME/requirements.toml Set values a developer cannot change. Keys marked pin below hold against every other file, the environment, and the command line.

Choose managed_config.toml for defaults you want people to be able to adjust, and requirements.toml for the ones you do not.

Grok Build also reads these layers, later rows winning except where a requirements pin or the Managed column says otherwise.

  1. Compiled defaults.
  2. /etc/grok/managed_config.toml, then $GROK_HOME/managed_config.toml (fleet defaults; console-synced).
  3. $GROK_HOME/config.toml (your settings; /settings writes here). Default $GROK_HOME is ~/.cook.
  4. Project .grok/config.toml: only [mcp_servers], [plugins], [permission], and [mcp] max_output_bytes.
  5. GROK_CONFIG (inline JSON) or GROK_CONFIG_PATH (JSON or TOML file). Allowlisted keys only.
  6. $GROK_HOME/requirements.toml, then /etc/grok/requirements.toml, then macOS MDM ai.x.grok. Admin layer. Keys marked pin in the table cannot be overridden; keys marked yes are also valid in this file.
  7. GROK_* environment variables.
  8. CLI flags such as --model, --sandbox, --yolo.

Run grok inspect or grok inspect --json to see which files and values won.

config.toml

User-level configuration lives in $GROK_HOME/config.toml (default ~/.cook/config.toml; Windows %USERPROFILE%\.cook\config.toml). Project-scoped overrides live in .grok/config.toml and only contribute [mcp_servers], [plugins], [permission], and [mcp] max_output_bytes.

Requirements marks whether the same key can be set in requirements.toml: pin cannot be overridden (including env and CLI where the resolver honors the pin); yes is accepted in that file; — is not read from requirements.toml. Managed marks whether a fleet managed_config.toml value stands (fleet) or the user's file wins (user).

`agent`

Key Type / Values Requirements Managed Details
agent.definition string (path) yes user Path to an agent definition markdown file with YAML frontmatter.
agent.name string yes user Built-in or discovered agent definition name. Also GROK_AGENT and --agent-profile.
agent.system_prompt_label string yes user Global system-prompt identity; per-model override wins.

`announcements`

Key Type / Values Requirements Managed Details
announcements array of tables — user Remote announcement payloads consumed at load. Not a user-authored table.

`auth`

Key Type / Values Requirements Managed Details
auth table yes user Alias of [grok_com_config]; every grok_com_config.* key also works as auth.*.
auth.auth_provider_command string yes user External auth binary; stdout is the token. With endpoints.models_base_url or models_list_url set, that endpoint's list decides which models are offered. Also GROK_AUTH_PROVIDER_COMMAND; also valid as grok_com_config.auth_provider_command.
auth.auth_provider_label string yes user Login button label for an external auth provider. Also GROK_AUTH_PROVIDER_LABEL; also valid as grok_com_config.auth_provider_label.
auth.auth_token_ttl number yes user Token TTL in seconds for providers that return a bare token. Also GROK_AUTH_TOKEN_TTL; also valid as grok_com_config.auth_token_ttl.
auth.disable_api_key_auth boolean pin user Refuse API-key auth so only the deployment IdP can log in. Also GROK_DISABLE_API_KEY_AUTH; also valid as grok_com_config.disable_api_key_auth.
auth.force_login_team_uuid string / string[] pin user Require login to this team UUID, or any of an array; empty array fails closed. Also GROK_FORCE_LOGIN_TEAM_ID; also valid as grok_com_config.force_login_team_uuid.
auth.grok_ws_origin string yes user Websocket origin for grok.com. Also GROK_WS_ORIGIN; also valid as grok_com_config.grok_ws_origin.
auth.grok_ws_url string yes user Relay websocket URL. Also GROK_WS_URL; also valid as grok_com_config.grok_ws_url.
auth.oauth2 table yes user OAuth2 provider used when enterprise OIDC is unset; also valid as grok_com_config.oauth2.
auth.oauth2.client_id string yes user OAuth2 client id. Also GROK_OAUTH2_CLIENT_ID; also valid as grok_com_config.oauth2.client_id.
auth.oauth2.issuer string yes user OAuth2 issuer URL. Also GROK_OAUTH2_ISSUER; also valid as grok_com_config.oauth2.issuer.
auth.oauth2.principal_id string yes user Required principal id when principal_type is set. Also GROK_OAUTH2_PRINCIPAL_ID; also valid as grok_com_config.oauth2.principal_id.
auth.oauth2.principal_type string yes user Token principal type, such as Team. Also GROK_OAUTH2_PRINCIPAL_TYPE; also valid as grok_com_config.oauth2.principal_type.
auth.oauth2.referrer string yes user Referrer for OAuth usage attribution. Also GROK_OAUTH2_REFERRER; also valid as grok_com_config.oauth2.referrer.
auth.oauth2.scopes string[] yes user OAuth2 scopes. Also GROK_OAUTH2_SCOPES; also valid as grok_com_config.oauth2.scopes.
auth.oidc table yes user Customer OIDC identity-provider settings; also valid as grok_com_config.oidc.
auth.oidc.audience string yes user Optional OIDC audience. Also GROK_OIDC_AUDIENCE; also valid as grok_com_config.oidc.audience.
auth.oidc.client_id string yes user OIDC client id. Also GROK_OIDC_CLIENT_ID; also valid as grok_com_config.oidc.client_id.
auth.oidc.issuer string yes user OIDC issuer URL. Also GROK_OIDC_ISSUER; also valid as grok_com_config.oidc.issuer.
auth.oidc.scopes string[] yes user OIDC scopes. Also GROK_OIDC_SCOPES; also valid as grok_com_config.oidc.scopes.
auth.preferred_method api_key / oidc yes user Pin automatic auth to one method with no fallthrough; also valid as grok_com_config.preferred_method.
auth.token_header string yes user Header name that carries the CLI auth token; default xai-grok-cli; also valid as grok_com_config.token_header.

`auth_provider`

Key Type / Values Requirements Managed Details
auth_provider.<name> table yes user Named credential helper used by [model.<id>] auth_provider.

`auto_mode`

Key Type / Values Requirements Managed Details
auto_mode.enabled boolean yes user Enable Auto permission mode.

`campaigns`

Key Type / Values Requirements Managed Details
campaigns array of tables yes user Named campaign patches applied below requirements. The deployment publishes these.

`cli`

Key Type / Values Requirements Managed Details
cli.auto_update boolean pin user Check for CLI updates on launch. Also GROK_DISABLE_AUTOUPDATER to suppress.
cli.channel stable / alpha pin user Release channel preference.
cli.grove boolean or grove / grove-fuse / grove-nfs / nfs / all / copy / true / false / 1 / 0 / on / off yes user Convenience that turns both grok clone and session / -w Grove on when the specific knobs are unset. Also GROK_GROVE. false / copy / off means enable-all is off (fall through); it does not force both surfaces off. [cli] grove_worktree and GROK_WORKTREE_TYPE still win for worktrees; GROK_CLONE still wins for clone. Remote grove_worktree = false still kills worktrees only.
cli.grove_worktree boolean or grove / grove-fuse / grove-nfs / nfs / copy / true / false / 1 / 0 / on / off yes user Session / -w Grove vs copy. Default copy. Distinct from creation-mode cli.worktree_type. Also GROK_WORKTREE_TYPE. Layer order: request → env → local → enable-all (GROK_GROVE / [cli] grove) → remote-true; then kill last: remote grove_worktree = false → copy (remote_kill). Missing remote settings are not a kill: local/env/request/enable-all still apply. Does not enable grok clone.
cli.installer string — user Which installer last set up this CLI, used to pick the update path.
cli.maximum_version string pin user Highest CLI version that still runs without a hard block. Also GROK_MAXIMUM_VERSION.
cli.minimum_version string pin user Lowest CLI version that still runs without a hard block. Also GROK_MINIMUM_VERSION.
cli.npm_registry string yes user npm registry used by the auto-updater.
cli.nfs_worktree same as cli.grove_worktree yes user Read alias of cli.grove_worktree.
cli.required_maximum_version string pin user Hard maximum CLI version. Also GROK_REQUIRED_MAXIMUM_VERSION.
cli.required_minimum_version string pin user Hard minimum CLI version. Also GROK_REQUIRED_MINIMUM_VERSION.
cli.session_picker_grouped boolean yes user Group sessions by repo in the picker and CLI listings.
cli.session_registry boolean yes user Participate in the cross-process session registry.
cli.show_tips boolean pin user Startup tips.
cli.use_leader boolean pin user Use the leader process for config reload and MCP watches.
cli.worktree_type string yes user Creation-mode when set to linked, standalone, or git. The spellings grove, grove-fuse, grove-nfs, nfs, and copy also feed the session / -w Grove gate (same as cli.grove_worktree); they are not creation-mode values.

`compat`

Key Type / Values Requirements Managed Details
compat.claude.agents boolean yes user Scan CLAUDE.md. Also GROK_CLAUDE_AGENTS_ENABLED.
compat.claude.hooks boolean yes user Scan Claude hooks. Also GROK_CLAUDE_HOOKS_ENABLED.
compat.claude.mcps boolean yes user Scan Claude MCP config. Also GROK_CLAUDE_MCPS_ENABLED.
compat.claude.rules boolean yes user Scan Claude rules. Also GROK_CLAUDE_RULES_ENABLED.
compat.claude.skills boolean yes user Scan Claude skills. Also GROK_CLAUDE_SKILLS_ENABLED.
compat.codex.hooks boolean yes user Scan Codex hooks when present.
compat.codex.skills boolean yes user Scan Codex skills directories when present.
compat.cursor.agents boolean yes user Scan agent definitions from Cursor compat sources. Also GROK_CURSOR_AGENTS_ENABLED.
compat.cursor.hooks boolean yes user Scan Cursor hooks. Also GROK_CURSOR_HOOKS_ENABLED.
compat.cursor.mcps boolean yes user Scan Cursor mcp.json. Also GROK_CURSOR_MCPS_ENABLED.
compat.cursor.rules boolean yes user Scan .cursor/rules/. Also GROK_CURSOR_RULES_ENABLED.
compat.cursor.skills boolean yes user Scan Cursor skills directories. Also GROK_CURSOR_SKILLS_ENABLED.

`dashboard`

Key Type / Values Requirements Managed Details
dashboard.enabled boolean yes user Show the agent dashboard.
dashboard.grouping state / directory yes user How dashboard rows group.

`default_auto_mode`

Key Type / Values Requirements Managed Details
default_auto_mode boolean yes user Start sessions in auto permission mode when no per-session override is set.

`diagnostics`

Key Type / Values Requirements Managed Details
diagnostics.crash_handler boolean yes user Write a panic report under $GROK_HOME/crash/. Also GROK_CRASH_HANDLER.

`disable_web_search`

Key Type / Values Requirements Managed Details
disable_web_search boolean yes user Force-off for the web_search tool for this process (beats features.web_search). Also --disable-web-search.

`disabled_mcp_servers`

Key Type / Values Requirements Managed Details
disabled_mcp_servers string[] yes user MCP server names to skip without deleting their [mcp_servers] blocks.

`disabled_mcp_tools`

Key Type / Values Requirements Managed Details
disabled_mcp_tools map<string, string[]> yes user Per-server MCP tool deny lists keyed by server name.

`doom_loop_recovery`

Key Type / Values Requirements Managed Details
doom_loop_recovery.enabled boolean yes user Resample confident tool-call loops; set false to disable.

`endpoints`

Key Type / Values Requirements Managed Details
endpoints.cli_chat_proxy_base_url string pin user Session-service API base URL.
endpoints.deployment_key string pin user Management key for enterprise deployments. Also GROK_DEPLOYMENT_KEY.
endpoints.feedback_base_url string yes user Where feedback submissions go. Also GROK_FEEDBACK_BASE_URL.
endpoints.managed_config_url string yes user Override managed config endpoint. Also GROK_MANAGED_CONFIG_URL.
endpoints.models_base_url string pin user Custom inference base URL. With auth_provider_command set, {models_base_url}/models decides which models are offered. Also GROK_MODELS_BASE_URL.
endpoints.models_list_url string pin user Override model-list URL. With auth_provider_command set, this list decides which models are offered. Also GROK_MODELS_LIST_URL. Alias models_endpoint.
endpoints.trace_upload_bucket string yes user Direct gs:// or s3:// bucket for traces; bypasses the proxy. Also GROK_TRACE_UPLOAD_BUCKET.
endpoints.trace_upload_credentials string yes user Inline GCS service-account JSON or AWS credentials for that bucket; wins over trace_upload_credentials_file and has no environment variable.
endpoints.trace_upload_credentials_file string (path) yes user Path to a GCS service-account JSON or AWS credentials file for that bucket. Also GROK_TRACE_UPLOAD_CREDENTIALS_FILE.
endpoints.trace_upload_endpoint_url string yes user Custom S3-compatible endpoint for s3:// bucket uploads. Also GROK_TRACE_UPLOAD_ENDPOINT_URL.
endpoints.trace_upload_region string yes user AWS region for s3:// bucket uploads; default us-east-1. Also GROK_TRACE_UPLOAD_REGION.
endpoints.trace_upload_url string pin user Proxy destination for traces when no direct bucket is set. Also GROK_TRACE_UPLOAD_URL.
endpoints.xai_api_base_url string pin user Public xAI API base. Also GROK_XAI_API_BASE_URL.

`features`

Key Type / Values Requirements Managed Details
features.active_agent_messages boolean pin user Enable or disable active_agent_messages. Default false. Also GROK_ACTIVE_AGENT_MESSAGES.
features.ask_user_question boolean pin user Enable or disable ask_user_question. Default true. Also GROK_ASK_USER_QUESTION.
features.auto_wake boolean pin user Enable or disable auto_wake. Default true. Also GROK_AUTO_WAKE.
features.backend_tools boolean pin user Enable or disable backend_tools. Default true. Also GROK_BACKEND_SEARCH.
features.campaigns boolean yes user Enable remote campaign patches. GROK_CAMPAIGNS=0 still disables even when requirements set this true.
features.cancel_rewind boolean pin user Enable or disable cancel_rewind. Default true. Also GROK_CANCEL_REWIND.
features.codebase_indexing boolean / string[] pin user Codebase graph indexing; true indexes git repos, or pass include/exclude globs.
features.compaction_detail none / minimal / balanced / verbose yes user Verbatim detail level for segments compaction. Also GROK_COMPACTION_DETAIL.
features.compaction_mode summary / transcript / segments yes user Compaction strategy. Also GROK_COMPACTION_MODE.
features.compaction_tool_choice string yes user Tool-choice hint used during compaction.
features.compaction_verbatim_input boolean pin user Enable or disable compaction_verbatim_input. Default true. Also GROK_COMPACTION_VERBATIM_INPUT.
features.dock boolean pin user Enable or disable dock. Default false. Also GROK_DOCK.
features.feedback boolean pin user Enable or disable feedback. Default false. Also GROK_FEEDBACK_ENABLED.
features.web_search boolean pin user Client web_search tool. Default false. Also GROK_WEB_SEARCH. --disable-web-search remains a force-off.
features.feedback_trace_card boolean pin user Show a trace-upload consent question after /feedback. Default false. Also GROK_FEEDBACK_TRACE_CARD.
features.file_acceleration boolean pin user Hand local sessions' file systems to a file accelerator when the build installs one. Default false. Also GROK_FILE_ACCELERATION.
features.image_edit_model_override string yes user Imagine model id for image_edit.
features.image_gen boolean pin user Enable image_gen / /imagine. Default false. Also GROK_IMAGE_GEN.
features.image_gen_model_override string yes user Imagine model id for image_gen. Empty defers to the remotely configured default.
features.lsp_tools boolean pin user Enable or disable lsp_tools. Default false. Also GROK_LSP_TOOLS.
features.managed_config boolean yes user Fetch managed_config.toml and requirements.toml from the deployment.
features.mcp_auto_restart boolean yes user Auto-restart stdio MCP servers after transport failure. Also GROK_MCP_AUTO_RESTART.
features.mcp_liveness_watchers boolean yes user Poll MCP transports and push server_status updates. Emergency kill switch when false.
features.mcp_push_server_status boolean yes user Pager subscribes to MCP server_status push. Process env GROK_MCP_PUSH_SERVER_STATUS wins at launch.
features.mcp_recursive_config_watch boolean yes user Watch <cwd>/ and <cwd>/.grok/ for project MCP config edits. Name is a misnomer; watches are non-recursive.
features.non_git_warning boolean yes user Show a blocking warning when Grok starts outside a Git repository.
features.remember_mode boolean — — Remember the last permission mode across sessions. Read from user config.toml only.
features.remote_fetch boolean pin fleet Pin remote model-catalog and asset fetch. Managed wins over the user file when both set.
features.session_recap boolean pin user Enable or disable session_recap. Default true. Also GROK_SESSION_RECAP.
features.session_search boolean pin user Enable or disable session_search. Default true. Also GROK_SESSION_SEARCH.
features.subagent_model_inheritance boolean pin user Hide the subagent model argument when every model you can pick is an xAI model, so subagents inherit the parent's model. Default false. Also GROK_SUBAGENT_MODEL_INHERITANCE. Read when a session starts; changing it requires a restart.
features.subagent_worktree_snapshot boolean pin user Enable or disable subagent_worktree_snapshot. Default false. Also GROK_SUBAGENT_WORKTREE_SNAPSHOT.
features.support_permission boolean yes user Allow the agent to ask permission for tool executions.
features.telemetry boolean / session_metrics / off pin user Product telemetry mode. Enterprise default is off.
features.terminal_theme boolean pin user Reveal the terminal-native terminal color theme during its rollout. Default false. Also GROK_TERMINAL_THEME.
features.title_refresh boolean pin user Early-session auto-title refresh. Pin this in requirements to beat GROK_TITLE_REFRESH.
features.turn_summary boolean pin user Enable or disable turn_summary. Default true. Also GROK_TURN_SUMMARY.
features.two_pass_compaction boolean pin user Enable or disable two_pass_compaction. Default true. Also GROK_TWO_PASS_COMPACTION.
features.video_gen boolean pin user Enable video tools / /imagine-video. Default false. Also GROK_VIDEO_GEN.
features.voice_mode boolean pin user Enable or disable voice_mode. Default true. Also GROK_VOICE_MODE.
features.web_fetch boolean pin user Enable or disable web_fetch. Default false. Also GROK_WEB_FETCH.
features.write_file boolean pin user Enable or disable write_file. Default true. Also GROK_WRITE_FILE.
features.zdr_access_enabled boolean pin user Advertise ZDR-incompatible tools when the team is on Zero Data Retention. Also GROK_ZDR_ACCESS_ENABLED.

`feedback`

Key Type / Values Requirements Managed Details
feedback.user.command string yes user Shell command that prints name and email JSON for feedback submissions.
feedback.user.email string[] yes user Sources for the feedback author email (git_email or a literal).
feedback.user.name string[] yes user Sources for the feedback author name (os_user or a literal).

`file_acceleration`

Key Type / Values Requirements Managed Details
file_acceleration.routes string yes user Route override passed unparsed to the installed file accelerator; empty is unset. Also GROK_FILE_ACCELERATION_ROUTES.

`goal`

Key Type / Values Requirements Managed Details
goal.enabled boolean yes user Enable /goal. Default false. Also GROK_GOAL.

`grok_com_config`

Key Type / Values Requirements Managed Details
grok_com_config table yes user Grok.com websocket and OAuth/OIDC settings. [auth] is an alias.
grok_com_config.auth_provider_command string yes user External auth binary; stdout is the token. With endpoints.models_base_url or models_list_url set, that endpoint's list decides which models are offered. Also GROK_AUTH_PROVIDER_COMMAND.
grok_com_config.auth_provider_label string yes user Login button label for an external auth provider. Also GROK_AUTH_PROVIDER_LABEL.
grok_com_config.auth_token_ttl number yes user Token TTL in seconds for providers that return a bare token. Also GROK_AUTH_TOKEN_TTL.
grok_com_config.disable_api_key_auth boolean pin user Refuse API-key auth so only the deployment IdP can log in. Also GROK_DISABLE_API_KEY_AUTH.
grok_com_config.force_login_team_uuid string / string[] pin user Require login to this team UUID, or any of an array; empty array fails closed. Also GROK_FORCE_LOGIN_TEAM_ID.
grok_com_config.grok_ws_origin string yes user Websocket origin for grok.com. Also GROK_WS_ORIGIN.
grok_com_config.grok_ws_url string yes user Relay websocket URL. Also GROK_WS_URL.
grok_com_config.oauth2 table yes user OAuth2 provider used when enterprise OIDC is unset.
grok_com_config.oauth2.client_id string yes user OAuth2 client id. Also GROK_OAUTH2_CLIENT_ID.
grok_com_config.oauth2.issuer string yes user OAuth2 issuer URL. Also GROK_OAUTH2_ISSUER.
grok_com_config.oauth2.principal_id string yes user Required principal id when principal_type is set. Also GROK_OAUTH2_PRINCIPAL_ID.
grok_com_config.oauth2.principal_type string yes user Token principal type, such as Team. Also GROK_OAUTH2_PRINCIPAL_TYPE.
grok_com_config.oauth2.referrer string yes user Referrer for OAuth usage attribution. Also GROK_OAUTH2_REFERRER.
grok_com_config.oauth2.scopes string[] yes user OAuth2 scopes. Also GROK_OAUTH2_SCOPES.
grok_com_config.oidc table yes user Customer OIDC identity-provider settings.
grok_com_config.oidc.audience string yes user Optional OIDC audience. Also GROK_OIDC_AUDIENCE.
grok_com_config.oidc.client_id string yes user OIDC client id. Also GROK_OIDC_CLIENT_ID.
grok_com_config.oidc.issuer string yes user OIDC issuer URL. Also GROK_OIDC_ISSUER.
grok_com_config.oidc.scopes string[] yes user OIDC scopes. Also GROK_OIDC_SCOPES.
grok_com_config.preferred_method api_key / oidc yes user Pin automatic auth to one method with no fallthrough.
grok_com_config.token_header string yes user Header name that carries the CLI auth token; default xai-grok-cli.

`harness`

Key Type / Values Requirements Managed Details
harness.wait_for_uploads boolean yes user Wait for turn-end trace uploads before returning the prompt response. Off by default; one-shot headless runs instead drain pending turn-end uploads at exit within a mandatory minimum budget (about 150s: the parse window plus one upload attempt) that upload_flush_timeout_secs, when larger, extends.
harness.disable_workspace_teleport boolean pin user Kill switch for per-turn workspace snapshots.

`hints`

Key Type / Values Requirements Managed Details
hints.fork_worktree_mode ask / always / never yes user Whether /fork offers a worktree.
hints.new_session_worktree_mode ask / always / never yes user Whether /new offers a worktree.

`hooks`

Key Type / Values Requirements Managed Details
hooks.<event> array of tables yes user Matcher groups for a lifecycle event such as PreToolUse or Stop. See Hooks.
hooks.<event>[].hooks[].command string yes user Command to run for this hook. $VAR is not expanded at load.
hooks.<event>[].hooks[].type command yes user Hook handler type. Command hooks are supported.
hooks.<event>[].matcher string yes user Tool-name matcher for this hook group.

`long_reasoning_reminder`

Key Type / Values Requirements Managed Details
long_reasoning_reminder.enabled boolean yes user Inject a mid-turn reminder to reason briefly after a model call with long hidden reasoning. Default false. Also GROK_LONG_REASONING_REMINDER (a bool word, or a JSON object in this table's shape).
long_reasoning_reminder.tokens integer yes user Reasoning tokens in one model call that count as long. Default 1000, clamped to 100–200000. Also tokens in the GROK_LONG_REASONING_REMINDER JSON object.
long_reasoning_reminder.delay integer yes user Model calls to wait after the long call before the reminder. Default 1, clamped to 0–10. Also delay in the GROK_LONG_REASONING_REMINDER JSON object.

`managed_mcps`

Key Type / Values Requirements Managed Details
managed_mcps.enabled boolean pin user Fetch managed MCP configs at startup. Default false. Also GROK_MANAGED_MCPS_ENABLED.
managed_mcps.gateway_tools_enabled boolean yes user Expose managed MCP gateway tools. Also GROK_MANAGED_MCP_GATEWAY_TOOLS_ENABLED.

`marketplace`

Key Type / Values Requirements Managed Details
marketplace.sources array of tables yes user [[marketplace.sources]] plugin marketplace repos.
marketplace.require_sha boolean yes user Tighten-only: remote plugin installs and updates must pin a full commit sha. Also GROK_MARKETPLACE_REQUIRE_SHA. Neither this key nor the env var can turn the gate back off.

`mcp`

Key Type / Values Requirements Managed Details
mcp.max_output_bytes number yes user Cap MCP tool output size in bytes. Project files may set this.

`mcp_servers`

Key Type / Values Requirements Managed Details
mcp_servers.<name>.args string[] yes user [mcp_servers.<name>] args on a stdio or HTTP MCP server.
mcp_servers.<name>.bearer_token_env_var string yes user [mcp_servers.<name>] bearer_token_env_var on a stdio or HTTP MCP server.
mcp_servers.<name>.bearer_token_file string yes user [mcp_servers.<name>] bearer_token_file on an HTTP MCP server: absolute or ~/ path to a bearer token, re-read on every request.
mcp_servers.<name>.command string yes user [mcp_servers.<name>] command on a stdio or HTTP MCP server.
mcp_servers.<name>.cwd string yes user [mcp_servers.<name>] cwd on a stdio or HTTP MCP server.
mcp_servers.<name>.enabled boolean yes user [mcp_servers.<name>] enabled on a stdio or HTTP MCP server.
mcp_servers.<name>.env table yes user [mcp_servers.<name>] env on a stdio or HTTP MCP server.
mcp_servers.<name>.expose_image_base64 boolean yes user [mcp_servers.<name>] expose_image_base64 on a stdio or HTTP MCP server.
mcp_servers.<name>.headers table yes user [mcp_servers.<name>] headers on a stdio or HTTP MCP server.
mcp_servers.<name>.oauth table yes user [mcp_servers.<name>] oauth on a stdio or HTTP MCP server.
mcp_servers.<name>.oauth_client_id string yes user [mcp_servers.<name>] oauth_client_id on a stdio or HTTP MCP server.
mcp_servers.<name>.oauth_client_secret_env_var string yes user [mcp_servers.<name>] oauth_client_secret_env_var on a stdio or HTTP MCP server.
mcp_servers.<name>.oauth_scopes string[] yes user [mcp_servers.<name>] oauth_scopes on a stdio or HTTP MCP server.
mcp_servers.<name>.setup table yes user [mcp_servers.<name>] setup on a stdio or HTTP MCP server.
mcp_servers.<name>.startup_timeout_sec number yes user [mcp_servers.<name>] startup_timeout_sec on a stdio or HTTP MCP server.
mcp_servers.<name>.tool_timeout_sec number yes user [mcp_servers.<name>] tool_timeout_sec on a stdio or HTTP MCP server.
mcp_servers.<name>.tool_timeouts table yes user [mcp_servers.<name>] tool_timeouts on a stdio or HTTP MCP server.
mcp_servers.<name>.type string yes user [mcp_servers.<name>] type on a stdio or HTTP MCP server.
mcp_servers.<name>.url string yes user [mcp_servers.<name>] url on a stdio or HTTP MCP server.

`memory`

Key Type / Values Requirements Managed Details
memory.enabled boolean pin user Legacy memory switch. Also GROK_MEMORY; superseded when the v2 gate is enabled.
memory_v2.enabled boolean pin user Primary memory-v2 switch. When true, v2 takes precedence over legacy memory.enabled. When false or absent, legacy enablement is resolved normally. Default: false.
memory_v2.rollout "off", "record_only", "shadow", "active" — user Advanced staged-rollout control for new v2 sessions. Default: "active" after enabling v2. Most users should leave this unset.
memory_v2.capture_status_enabled boolean — user Shows memory-v2 capture lifecycle messages in the UI for debugging. Successful captures are expandable and include generated content plus links to committed observation files. Telemetry and debug logs are always recorded. Default: false.
memory_v2.capture_enabled boolean — user Enables memory-v2 extraction and observation capture. Default: true.
memory_v2.automatic_dream_enabled boolean — user Enables event-driven memory-v2 Dream. Default: true.
memory_v2.manual_dream_enabled boolean — user Enables explicitly requested memory-v2 Dream. Default: true.
memory_v2.batch_dream_enabled boolean — user Runs active memory-v2 Dream as batch Dream, which folds notes into topics in batches with the full topic catalog; a local value wins over remote memory_v2.batch_dream_enabled, then defaults to false.
memory_v2.batch_dream_max_run_secs number — user Caps one batch Dream run in seconds, default 1800, clamped to 60–3600; unfinished notes stay in the inbox. A local value wins over remote memory_v2.batch_dream_max_run_secs.
memory_v2.batch_dream_max_calls_per_batch number — user Caps model calls per batch Dream batch, default 6, clamped to 2–16. A local value wins over remote memory_v2.batch_dream_max_calls_per_batch.
memory_v2.batch_dream_max_batch_note_bytes number — user Caps note bytes in one batch Dream batch, default 98304, clamped to 16384–262144. A local value wins over remote memory_v2.batch_dream_max_batch_note_bytes.
memory_v2.compact_index_enabled boolean — user Injects a titles-only memory index into the system prompt (no topic descriptions, no pending observations) so more topics fit the 8 KiB budget; titled entries are ordered by how often the agent has read each topic, and the on-disk MEMORY.md is rendered the same way. A local value wins over the remote memory_v2.compact_index_enabled. Default: false.
memory_v2.file_writes_enabled boolean — user Enables all memory-v2 file mutation; false fails closed before scaffold creation. Default: true.
memory_v2.archived_retention_days number — user Retains archived memory-v2 observation files for this many days. Default: 30.
memory_v2.job_retention_days number — user Retains terminal memory-v2 capture-job metadata for this many days. Default: 14.

`model`

Key Type / Values Requirements Managed Details
model.<id> table yes user Per-model override or BYOK definition. Prefer env_key over inline api_key.
model.<id>.agent_type string yes user Agent definition type associated with this model.
model.<id>.api_backend chat_completions / responses / messages yes user Wire protocol for this model.
model.<id>.api_base_url string yes user Alternate API base used with XAI_API_KEY resolution.
model.<id>.api_key string yes user Inline API key. Prefer env_key. Not a secret to put in a shared repo.
model.<id>.auth_provider string yes user Name of a [auth_provider.<name>] helper that mints this model's bearer token.
model.<id>.auto_compact_threshold_percent integer yes user Per-model auto-compact threshold (0-100).
model.<id>.base_url string yes user Provider endpoint base URL.
model.<id>.compaction_at_tokens number / table yes user Token threshold that triggers compaction for this model.
model.<id>.compactions_remaining string / table yes user How compaction leftover context is sent. Alias send_compactions_remaining.
model.<id>.context_window number yes user Context window tokens; drives auto-compact timing.
model.<id>.description string yes user Optional description shown in the picker.
model.<id>.env_http_headers map<string,string> yes user HTTP headers populated from environment variables when set.
model.<id>.env_key string / string[] yes user Environment variable name(s) holding the provider API key.
model.<id>.extra_headers map<string,string> yes user Per-request headers for this model.
model.<id>.hidden boolean yes user Hide this model from the picker. Still usable via -m.
model.<id>.inference_idle_timeout_secs number yes user Idle timeout for streaming inference on this model.
model.<id>.max_completion_tokens number yes user Per-model max completion tokens.
model.<id>.max_request_bytes number yes user Provider request-body cap that inline images are evicted to stay under. Unset inherits the [model_providers.<id>] value, then the api_backend default: 30 MB for messages, 50 MiB otherwise.
model.<id>.max_retries number yes user Inference retries for this model.
model.<id>.model string yes user Model id sent to the API.
model.<id>.model_family string yes user Family id used for compaction and capability grouping.
model.<id>.model_provider string yes user Named [model_providers.<name>] provider id for this model.
model.<id>.mtls_cert_dir string yes user Directory containing the model endpoint's mTLS identity as client.crt and client.key, or tls.crt and tls.key; configuration is rejected unless the same model has one HTTPS base_url and no api_base_url, and requests do not follow redirects.
model.<id>.name string yes user Label shown in the model picker.
model.<id>.notice table (severity = info / warning / critical, text, label) yes user Message shown above the prompt while this model is selected, cleared for this model by a blank text.
model.<id>.query_params map<string,string> yes user Extra query parameters on this model's requests.
model.<id>.rate_limit_retry_threshold number yes user Total-attempt ceiling for rate-limited requests, capped by the resolved max_retries; when configured, it disables the separate subagent 429 wait loop.
model.<id>.reasoning_effort string yes user Deprecated per-model effort; prefer reasoning_efforts.
model.<id>.reasoning_efforts array of tables yes user Allowed reasoning-effort values for this model. When omitted, the menu comes from the endpoint's /v1/models row (reasoning_efforts, or capabilities.reasoning_effort when that is absent).
model.<id>.reasoning_summary none / auto / concise / detailed yes user Responses API reasoning.summary for this model; default concise. none omits the field for endpoints that reject it (e.g. AWS Bedrock Mantle).
model.<id>.show_model_fingerprint boolean yes user Show the provider model fingerprint in the UI when present.
model.<id>.stream_tool_calls boolean yes user Per-model tool-call streaming request shape.
model.<id>.subagent_rate_limit_max_attempts number yes user Maximum subagent 429 wait-loop attempts when rate_limit_retry_threshold is unset; default 8, maximum 32, and 0 disables the wait loop.
model.<id>.supported_in_api boolean yes user Whether this catalog entry is offered as a public API model.
model.<id>.supports_batch_api boolean yes user Opt this model into Batch API requests, including the main-agent rounds in /goal_batch. Defaults to false; ordinary interactive turns ignore it.
model.<id>.supports_backend_search boolean yes user Whether the endpoint supports Grok-hosted server-side search tools.
model.<id>.supports_reasoning_effort boolean yes user Deprecated; prefer reasoning_efforts. An explicit false keeps the model out of any menu it would otherwise inherit from the endpoint or from a same-model catalog entry.
model.<id>.system_prompt_label string yes user Per-model system-prompt identity label.
model.<id>.temperature number yes user Per-model sampling temperature.
model.<id>.top_p number yes user Per-model top_p.
model.<id>.use_concise boolean yes user Use the concise tool-description pack for this model.

`model_providers`

Key Type / Values Requirements Managed Details
model_providers.<name> table yes user Named custom model provider definition.

`models`

Key Type / Values Requirements Managed Details
models.agent_type string yes user Fallback agent_type for models without a per-model override.
models.allowed_models string[] pin user Glob allowlist for the model picker, default, and -m, ignored outside requirements.toml when auth_provider_command and a custom models endpoint are set. Empty means no restriction.
models.default string pin user Model used for new sessions. Also GROK_DEFAULT_MODEL, --model, -m.
models.default_reasoning_effort string yes user Default reasoning effort for the default model when the model supports it.
models.disabled_models string[] yes user Remove these model IDs from the catalog. Wins over hidden_models.
models.extra_headers map<string,string> yes user Request headers applied to every model; per-model keys win.
models.hidden_models string[] yes user Hide these model IDs from the picker; -m can still select them.
models.image_description string yes user Vision model used to transcribe user-supplied images.
models.inference_idle_timeout_secs number yes user Global idle timeout for streaming inference when a model leaves it unset.
models.max_completion_tokens number yes user Global max completion tokens default when a model leaves it unset.
models.max_retries number yes user Global inference retry default when a model leaves it unset.
models.prompt_suggestion string yes user Model pin for next-prompt ghost text. Unset falls through remote, then the session model.
models.rate_limit_retry_threshold number yes user Global total-attempt ceiling for rate-limited requests when a model leaves it unset, capped by the resolved max_retries; when configured, it disables the separate subagent 429 wait loop.
models.session_summary string yes user Model used for session titles and summaries.
models.stream_tool_calls boolean yes user Global tool-call streaming request shape; some BYOK endpoints need false.
models.subagent_rate_limit_max_attempts number yes user Global default for subagent 429 wait-loop attempts when rate_limit_retry_threshold is unset; default 8, maximum 32, and 0 disables the wait loop.
models.temperature number yes user Global sampling temperature default when a model leaves it unset.
models.top_p number yes user Global top_p default when a model leaves it unset.
models.web_search string pin user Model used by the client web_search tool. Also GROK_WEB_SEARCH_MODEL.

`path_not_found_hints`

Key Type / Values Requirements Managed Details
path_not_found_hints boolean yes user Enrich path-not-found errors with CWD reminders and similar-name suggestions.

`paths`

Key Type / Values Requirements Managed Details
paths.extra_rule_dirs string[] yes user More rule directories (absolute or ~/…; each contains *.md), loaded after the home rules.
paths.extra_skill_dirs string[] yes user Records /import-claude skill directories that skill injection ignores in favor of [skills] paths.

`permission`

Key Type / Values Requirements Managed Details
permission.allow string[] yes user Compact allow rules such as Bash(git *). Deny beats ask beats allow. Project files may set this.
permission.ask string[] yes user Compact ask rules. Project files may set this.
permission.deny string[] yes user Compact deny rules. Project files may set this.
permission.rules array of tables yes user Verbose action/tool/pattern object rules. Project files may set this.

`plugins`

Key Type / Values Requirements Managed Details
plugins.disabled string[] yes user Plugin IDs to discover but not load. Project files may set this.
plugins.enabled string[] yes user Plugin IDs to enable; needed for project plugins that default off.
plugins.paths string[] yes user Additional plugin directories. Project files may set this when the folder is trusted.

`privacy`

Key Type / Values Requirements Managed Details
privacy.privacy_banner_acked string — — RFC 3339 UTC timestamp when the local privacy banner was dismissed. The pager reads user config.toml only.

`relay`

Key Type / Values Requirements Managed Details
relay.enabled boolean yes user Enable session relay sync.

`sandbox`

Key Type / Values Requirements Managed Details
sandbox.auto_allow_bash boolean pin user Skip bash permission prompts when a sandbox profile is active. Also GROK_SANDBOX_AUTO_ALLOW_BASH.
sandbox.profile off / workspace / read-only / strict / string pin user Filesystem sandbox profile. Also --sandbox and GROK_SANDBOX.

`session`

Key Type / Values Requirements Managed Details
session.auto_compact_threshold_percent integer yes user Auto-compact when context usage reaches this percent (0–100).
session.load_envrc boolean yes user Inject .envrc variables into bash.

`shell_environment_policy`

Key Type / Values Requirements Managed Details
shell_environment_policy.exclude string[] yes user Env names to drop from bash. Overlay-allowlisted.
shell_environment_policy.ignore_default_excludes boolean yes user Skip the built-in env denylist. Overlay-allowlisted.
shell_environment_policy.include_only string[] yes user If set, bash inherits only these env names. Overlay-allowlisted.
shell_environment_policy.inherit string yes user Which parent env names bash inherits. Overlay-allowlisted; cannot inject values.
shell_environment_policy.set map<string,string> yes user Inject env values into bash. Not overlay-allowlisted.

`skills`

Key Type / Values Requirements Managed Details
skills.status map<string, boolean> yes user Explicit activation state. Stored as [status] in ~/.cook/skills.toml; discovery records new names as true. Legacy disabled entries migrate to false.
skills.inject boolean yes user Inject the discovered skill catalog into the startup reminder and compaction section. Default true. Includes enabled names and descriptions; slash listing always discovers skills.
skills.paths string[] yes user Additional skill directories.

`storage`

Key Type / Values Requirements Managed Details
storage.cleanup_ttl_days integer yes user Days a session may stay idle before its folder is deleted; media and terminal logs older than this are pruned from live sessions; unset or 0 disables cleanup.

`subagents`

Key Type / Values Requirements Managed Details
subagents.enabled boolean pin user Subagent / task tool master switch, default false; a [subagents] table that only sets limits still follows that default. Also GROK_SUBAGENTS or --no-subagents.
subagents.limit_behavior queue / fail yes user What to do when the concurrent subagent cap is hit.
subagents.max_concurrent integer yes user Max concurrent subagents.
subagents.max_depth integer yes user Max nested subagent depth (clamped ≥1).
subagents.models.<name> string yes user Per-subagent model id override.
subagents.toggle.<name> boolean yes user Enable or disable an individual subagent type. Omitted agents default on.

`telemetry`

Key Type / Values Requirements Managed Details
telemetry.otel_enabled boolean pin user External OTEL master switch. Also GROK_EXTERNAL_OTEL.
telemetry.otel_metrics_exporter otlp / console / none pin user External OTEL metrics exporter. Also OTEL_METRICS_EXPORTER.
telemetry.otel_logs_exporter otlp / console / none pin user External OTEL logs exporter. Also OTEL_LOGS_EXPORTER.
telemetry.otel_endpoint string pin user External OTLP base endpoint. Also OTEL_EXPORTER_OTLP_ENDPOINT. Pin strips developer env and unlisted user/managed file siblings except listed.
telemetry.otel_logs_endpoint string pin user Logs-signal OTLP endpoint (verbatim). Also OTEL_EXPORTER_OTLP_LOGS_ENDPOINT.
telemetry.otel_metrics_endpoint string pin user Metrics-signal OTLP endpoint (verbatim). Also OTEL_EXPORTER_OTLP_METRICS_ENDPOINT.
telemetry.otel_protocol http/protobuf / grpc pin user External OTLP transport. Also OTEL_EXPORTER_OTLP_PROTOCOL. Pin strips per-signal protocol env and unlisted file siblings except listed.
telemetry.otel_logs_protocol http/protobuf / grpc pin user Logs-signal OTLP protocol. Also OTEL_EXPORTER_OTLP_LOGS_PROTOCOL.
telemetry.otel_metrics_protocol http/protobuf / grpc pin user Metrics-signal OTLP protocol. Also OTEL_EXPORTER_OTLP_METRICS_PROTOCOL.
telemetry.otel_timeout number pin user Export timeout in milliseconds. Also OTEL_EXPORTER_OTLP_TIMEOUT.
telemetry.otel_metric_export_interval number pin user Metric export interval in milliseconds. Also OTEL_METRIC_EXPORT_INTERVAL.
telemetry.otel_certificate string pin user PEM path of extra CA certs for the collector. Also OTEL_EXPORTER_OTLP_CERTIFICATE. CA pin does not strip endpoints.
telemetry.otel_logs_certificate string pin user Logs-signal CA PEM path. Also OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE.
telemetry.otel_metrics_certificate string pin user Metrics-signal CA PEM path. Also OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE.
telemetry.otel_client_certificate string pin user PEM path of the mTLS client certificate. Also OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE. Pin strips credential copies, developer endpoints, and unlisted file siblings.
telemetry.otel_client_key string pin user PEM path of the mTLS client key. Tokens never live in this file. Also OTEL_EXPORTER_OTLP_CLIENT_KEY.
telemetry.otel_logs_client_certificate string pin user Logs-signal mTLS client cert PEM path. Also OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE.
telemetry.otel_logs_client_key string pin user Logs-signal mTLS client key PEM path. Also OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY.
telemetry.otel_metrics_client_certificate string pin user Metrics-signal mTLS client cert PEM path. Also OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE.
telemetry.otel_metrics_client_key string pin user Metrics-signal mTLS client key PEM path. Also OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY.
telemetry.otel_metrics_include_session_id boolean pin user Attach session.id to metrics. Also OTEL_METRICS_INCLUDE_SESSION_ID.
telemetry.otel_log_user_prompts boolean pin user Content gate for prompt text on grok_code.user_prompt. Also OTEL_LOG_USER_PROMPTS. Pinning any content gate without listing a sibling defaults the omitted sibling off.
telemetry.otel_log_tool_details boolean pin user Metadata gate for tool-arg preview, paths, and verbatim names. Recommended on for SIEM join. Also OTEL_LOG_TOOL_DETAILS. Does not include full bodies.
telemetry.otel_log_assistant_responses boolean pin user Content gate for grok_code.assistant_response text. Unset follows otel_log_user_prompts unless a sibling gate is pinned in requirements. Env-only OTEL_LOG_USER_PROMPTS=1 must set this to 0 (or pin it false) for a prompts-only stream. Also OTEL_LOG_ASSISTANT_RESPONSES.
telemetry.otel_log_tool_content boolean pin user Body gate for tool_input, tool_output, full_command, and error_message. Independent of details; default off. CONTENT-only loses verbatim MCP names and paths. Also OTEL_LOG_TOOL_CONTENT.
telemetry.trace_upload boolean pin user Upload session traces. Requirements pin beats user config.

`tools`

Key Type / Values Requirements Managed Details
tools.disable_zdr_incompatible_tools boolean yes user Restrict tools that need xAI-hosted output under ZDR. Also GROK_DISABLE_ZDR_INCOMPATIBLE_TOOLS.
tools.media_gen.max_parallel_image_gen_calls integer yes user Cap parallel image_gen/image_edit calls in one model step. Also GROK_MAX_PARALLEL_IMAGE_GEN_CALLS.
tools.media_gen.max_parallel_video_gen_calls integer yes user Cap parallel video_gen calls in one model step. Also GROK_MAX_PARALLEL_VIDEO_GEN_CALLS.
tools.respect_gitignore boolean pin user When true, search and read tools skip gitignored files. Also GROK_RESPECT_GITIGNORE.
tools.zdr_video_output_s3 table yes user Team S3 bucket for ZDR video output. See ZDR Video Storage.

`toolset`

Key Type / Values Requirements Managed Details
toolset.ask_user_question.timeout_secs number yes user Timeout for the ask_user_question tool.
toolset.bash.auto_background_on_timeout boolean yes user Background the command when the foreground timeout fires.
toolset.bash.login_shell_capture boolean yes user Capture the user's login shell environment for bash. Overlay-allowlisted.
toolset.bash.max_timeout_secs number yes user Cap on model-requested foreground timeouts.
toolset.bash.output_byte_limit number yes user Max captured bash output in bytes.
toolset.bash.timeout_secs number yes user Foreground bash command timeout in seconds.
toolset.file_toolset standard / hashline yes user File edit tool scheme.
toolset.web_fetch.allowed_domains string[] yes user Domain allowlist override for web_fetch.
toolset.web_fetch.proxy_endpoint string yes user Egress proxy URL for web_fetch. Also GROK_WEB_FETCH_PROXY.
toolset.web_search.allowed_domains string[] yes user Domain allowlist for client web_search. Overlay-allowlisted.
toolset.web_search.excluded_domains string[] yes user Domain denylist for client web_search. Overlay-allowlisted.

`ui`

Key Type / Values Requirements Managed Details
ui.approval_mode string yes user Deprecated; use ui.permission_mode.
ui.auto_dark_theme string yes user Theme when theme = auto and the OS is dark.
ui.auto_light_theme string yes user Theme when theme = auto and the OS is light.
ui.cancel_subagents_on_turn_cancel ask / always_stop / always_continue yes user What to do with running subagents when cancelling a parent turn.
ui.collapsed_edit_blocks boolean yes user Show edits as one-line +N/-M summaries. Also GROK_COLLAPSED_EDIT_BLOCKS.
ui.combine_queued_prompts boolean yes user Merge consecutive plain follow-ups into one turn.
ui.compact_mode boolean yes user Denser message padding. Also /compact-mode.
ui.confirm_before_rewind boolean yes user Ask before rewinding conversation history.
ui.dashboard_preview boolean yes user The dashboard preview and reply panel appear by default (Appearance in /settings).
ui.contextual_hints.image_input boolean yes user Clipboard image paste tip when the model accepts images.
ui.contextual_hints.plan_mode boolean yes user Suggest plan mode (Shift+Tab) for planning-style prompts.
ui.contextual_hints.send_now boolean yes user After queuing a mid-turn follow-up, Enter on an empty prompt sends now.
ui.contextual_hints.small_screen boolean yes user Suggest /compact-mode on short terminals.
ui.contextual_hints.ssh_wrap boolean yes user Recommend grok wrap when SSH lacks a clipboard sink.
ui.contextual_hints.undo boolean yes user Ctrl+Z restores a wiped prompt draft tip.
ui.contextual_hints.word_select boolean yes user After double-click with fold/nav selection, point at Word select in settings.
ui.cursor_blink boolean yes user Force blinking (true) or steady (false) block cursor. Unset inherits the terminal.
ui.default_selected_permission string yes user Preselected approval row on the first prompt of a session. Also GROK_DEFAULT_SELECTED_PERMISSION.
ui.display_refresh.auto_cadence_enabled boolean yes user Match stream/scroll cadence to display refresh rate. Also GROK_DISPLAY_REFRESH_AUTO_CADENCE.
ui.follow_up_behavior steer / queue yes user Mid-turn follow-up routing (default steer).
ui.fork_secondary_model string yes user Model for the secondary agent when forking. Defaults to the main default model.
ui.group_tool_verbs boolean yes user Fold consecutive read/search/list tool rows. Also GROK_GROUP_TOOL_VERBS.
ui.hunk_tracker_mode agent_only / all_dirty / off yes user File-change hunk tracking. Also GROK_HUNK_TRACKER and --hunk-tracker-mode.
ui.invert_scroll boolean yes user Reverse vertical scroll direction. Also GROK_INVERT_SCROLL.
ui.keep_text_selection flash / hold / word_select yes user In-app selection: brief flash, hold, or double-click word select.
ui.max_thoughts_width number yes user Column width for the thoughts panel (40–500).
ui.mouse_reporting_toggle boolean yes user Ctrl+R in scrollback toggles terminal mouse capture. Also GROK_MOUSE_REPORTING_TOGGLE.
ui.page_flip_on_send boolean yes user Snap the sent prompt to the top of the viewport.
ui.permission_mode default / ask / auto / always-approve yes user Default tool-permission behavior. Enterprise locks use requirements.toml.
ui.prompt_suggestions boolean yes user Next-prompt ghost text after each turn. Also GROK_PROMPT_SUGGESTIONS; a remote kill-switch can disable it fleet-wide.
prompt_suggestions.max_output_tokens number yes user Visible-output tokens for the suggestion call; clamped to 16–256, default 64, with a separate reserve for reasoning. Remote-overridable.
prompt_suggestions.temperature number yes user Sampling temperature for the suggestion call (default 0.2). Remote-overridable.
prompt_suggestions.reasoning_effort none / minimal / low / medium / high yes user Reasoning effort for the suggestion call; default and none disable reasoning, while other values use a supported model effort. Remote-overridable.
ui.remember_tool_approvals boolean yes user Show per-tool Always allow options. Also GROK_REMEMBER_TOOL_APPROVALS.
ui.render_mermaid auto / on / off yes user How mermaid fences render: clickable open row or raw source.
ui.screen_mode fullscreen / minimal yes user Default render mode for plain grok. Restart required.
ui.scroll_lines integer yes user Lines per scroll tick (1–10). Also GROK_SCROLL_LINES.
ui.scroll_mode auto / wheel / trackpad yes user Scroll input classification. Also GROK_SCROLL_MODE.
ui.scroll_speed integer yes user Mouse/trackpad scroll speed multiplier (1–100). Also GROK_SCROLL_SPEED.
ui.show_thinking_blocks boolean yes user Show thinking/reasoning blocks while streaming. Also GROK_SHOW_THINKING_BLOCKS.
ui.show_timeline boolean yes user Per-turn tick rail instead of the scrollbar.
ui.show_timestamps boolean yes user Clock time next to messages. Also /timestamps.
ui.simple_mode boolean yes user Readline prompt editing when true; experimental vim prompt keys when false.
ui.status_line.command string yes user Script for a command status line. Campaigns strip this path; a requirements layer still merges it.
ui.status_line.type disabled / command yes user Optional status-line row above the shortcuts bar. Off by default. See the status-line user guide.
ui.theme string yes user Color theme name, or auto/system to follow the OS. Also /theme and GROK_THEME.
ui.ui_theme string yes user Legacy alias for ui.theme.
ui.vim_mode boolean yes user Vim keys in the scrollback, not the prompt. Also /vim-mode.
ui.voice_capture_mode hold / toggle yes user Hold-to-talk or press-to-toggle voice capture.
ui.voice_keybind_enabled boolean yes user Enable Ctrl+Space / F8 for voice dictation. /voice still works when false.
ui.voice_stt_language string yes user Speech-to-text language code or auto. Overrides [voice].language for the session.
ui.yolo boolean pin user Always-approve tool calls. Requirements can pin false and block --yolo.

`version_overrides`

Key Type / Values Requirements Managed Details
version_overrides array of tables yes user Per-CLI-version config patches applied before merge. See [[version_overrides]].

`voice`

Key Type / Values Requirements Managed Details
voice.api_base string yes user HTTPS API root for speech-to-text. Unset inherits [endpoints].xai_api_base_url.
voice.language string yes user Preferred STT language catalog code or auto.
voice.sample_rate number yes user STT capture rate in Hz.

`workflows`

Key Type / Values Requirements Managed Details
workflows.enabled boolean yes user Enable workflows. Default false. Also GROK_WORKFLOWS.

`worktree`

Key Type / Values Requirements Managed Details
worktree.auto_gc table yes user Automatic worktree garbage collection policy.

managed_config.toml

managed_config.toml accepts every key in the tables above. It sets fleet defaults, so a developer's own config.toml overrides it. Use it for values you want people to be able to adjust, and requirements.toml for values they cannot.

One exception to that rule:

Key Behaviour
features.remote_fetch The managed value wins over the developer's.

Grok Build reads /etc/grok/managed_config.toml first, then $GROK_HOME/managed_config.toml, which the console keeps in sync. Values in the second replace values in the first.

The Managed column on the tables above is the per-key answer: fleet means the fleet value stands, user means the user's file wins, — means this file is ignored.

requirements.toml

requirements.toml is an admin-enforced file. Locations: $GROK_HOME/requirements.toml (signed cache) then /etc/grok/requirements.toml, then macOS MDM ai.x.grok. The Requirements column on the config.toml tables lists every config.toml key this file accepts (pin or yes). Omitted keys stay unconstrained.

These keys exist only in requirements.toml:

Key Type / Values Default Details
fail_closed boolean false Refuse to start when signed requirements or version_overrides cannot be applied; default false.
features.image_edit boolean — Pin image_edit availability. Requirements only; a user-file entry is unrecognized and unset leaves the remotely configured default.
ui.disable_bypass_permissions_mode boolean — Lock always-approve off. The lock is enforced only from a requirements layer; true in user or managed files is ignored.

Policy pins such as allow_managed_hooks_only (see Hooks) and the MCP and marketplace lists (see Plugins) are accepted in requirements.toml and managed_config.toml alike and only ever tighten.

[[hooks.<Event>]] tables are accepted in every config file. Hooks from the signed requirements cache and the root-owned /etc/grok files are enforced; see Hooks.

What happens when a setting is refused

Situation What Grok Build does
A developer sets a key you pinned The pinned value applies. grok inspect lists the requirements file that contributed.
A developer sets a key you shipped in managed_config.toml Their value applies, except features.remote_fetch. Pin the key instead if it must hold.
requirements.toml is missing or its signature does not verify The pins do not apply, and Grok Build starts without them. Set fail_closed = true to refuse to start instead.
A pinned key names a value this version does not recognise The key is ignored and the rest of the file still applies.

Check what is in effect

Run grok inspect on the developer's machine. It lists every config file that contributed, including requirements and managed layers, so a policy that is not applying is visible in one command.