Skip to main content
Version: Classic 2.1.0

App Settings Tool

The app_settings MCP tool lets agents read and write an allowlisted set of RepoPrompt's global preferences — appearance, prompt packaging, edit-format defaults, preferred models, the Context Builder agent/model, MCP server behavior, and the global Code Maps toggle — without opening the Settings UI. Anything dangerous, secret, or workspace-specific is deliberately not exposed.

tip

Companion pages: Use this page for the MCP/JSON surface. For the same controls from a shell, see App Settings from the CLI. For the in-app UI equivalents, see Settings Reference.

When to Use It​

  • Match the user's preferred appearance or prompt packaging before building a copy preset.
  • Flip mcp.auto_start from setup scripts so RepoPrompt's listener launches with the app.
  • Reset models.planning_model to null so RepoPrompt falls back to defaults.
  • Temporarily disable Code Maps globally via code_maps.globally_disabled during large refactors.
  • Toggle edit-format defaults (editing.file_edit_format) before sending an edit-producing request.

Operations​

opSelectorsPurpose
listoptional groupBrowse the allowlist catalog. Each entry includes the current value and, for keys that have them, options_available: true.
getexactly one of key, keys, groupRead one or more setting values. Selectors are mutually exclusive.
setkey and valueUpdate exactly one setting. keys and group are rejected on set.
optionskey, optional agent, limit, detailedList candidate values for keys that advertise options_available: true (today: the model settings).

Parameters​

ParameterTypeNotes
oplist | get | set | optionsRequired.
groupstringui | prompt_packaging | editing | models | context_builder | mcp | code_maps. Used by list and as a selector for get.
keystringFully-qualified key (e.g. ui.appearance_mode). Required for set; optional selector for get.
keysarray of stringMulti-key selector for get. Mutually exclusive with key and group.
valueboolean | number | string | nullRequired on set. Accepted types match the entry's declared type in the catalog.
agentstringFor options on model settings: filter candidates to one CLI backend (e.g. claudeCode, codexExec, gemini).
limitintegerFor options: maximum number of candidates returned (1–200, default 60).
detailedbooleanFor options: include descriptions and model metadata in each candidate.

Groups​

The allowlist is organized into seven groups so an agent can browse narrowly before reaching for set. If you are not sure about the exact key, type, or allowed values, call list first; set validates strictly and rejects unknown or out-of-range values without partial application.

ui — Appearance and chrome​

KeyTypeDetails
ui.appearance_modestring enumSystem | Light | Dark. App appearance mode.
ui.show_tooltipsbooleanWhether RepoPrompt shows app tooltips.
ui.enable_keyboard_shortcutsbooleanGlobal keyboard shortcuts. New/changed shortcuts may only take effect after reopening a window.

prompt_packaging — How prompts are assembled​

KeyTypeDetails
prompt_packaging.prompt_sections_orderJSON string arraySerialized ordering of prompt sections; must contain each prompt section exactly once. Call {"op":"list","group":"prompt_packaging"} first and read the allowed_items array for this key to get the canonical list of prompt section raw values before sending set.
prompt_packaging.duplicate_user_instructions_at_topbooleanWhether user instructions are duplicated at the top of packaged prompts.
prompt_packaging.file_path_display_optionstring enumFull | Relative. How file paths are displayed in packaged context.
prompt_packaging.selected_files_sort_methodstring enumnameAscending | nameDescending | tokenAscending | tokenDescending.
prompt_packaging.include_datetime_in_user_instructionsbooleanWhether packaged user instructions include the current date/time.

editing — Edit-format defaults​

KeyTypeDetails
editing.file_edit_formatstring enumDiff | Whole | None. Preferred edit format for edit-producing requests.
editing.allow_diff_models_to_rewritebooleanWhether diff-oriented models may fall back to whole-file rewrites when needed.
editing.complex_edit_strategystring enumSingle query | Parallel split | Sequential split.

models — Model selection and inference defaults​

KeyTypeDetails
models.preferred_compose_model — Built-in Chat Modelstring | nullPreferred Built-in Chat model raw identifier, if set. Advertises options_available: true. Set null to clear.
models.planning_model — Oracle Modelstring | nullPreferred Oracle model raw identifier, if set. Advertises options_available: true. Set null to clear.
models.sync_chat_model_with_oracle — Sync Built-in Chat with OraclebooleanWhether the Built-in Chat model is kept in sync with the Oracle model.
models.temperaturenumberRange 0.0–2.0. Only applied when models.temperature_enabled is true.
models.temperature_enabledbooleanWhether the global temperature is sent with model requests.
models.custom_planning_prompt — Custom Oracle System PromptstringCustom system prompt used by the Oracle. Empty string restores the built-in default.

context_builder — Context Builder agent & model​

KeyTypeDetails
context_builder.agentstring enumCLI agent used by the Context Builder MCP tool. Allowed values come from the installed discover backends (for example claudeCode, codexExec, gemini); call list and read allowed_values for the current set. Writes preserve that backend's remembered model when one exists, or fall back to its default.
context_builder.modelstring | nullModel raw identifier used by the Context Builder MCP tool. Reads and writes the remembered model for the currently selected context_builder.agent; set null to clear that slot. Advertises options_available: true; by default, op=options scopes candidates to the current backend.

mcp — MCP server preferences​

KeyTypeDetails
mcp.auto_startbooleanWhether the MCP listener auto-starts when RepoPrompt launches. Does not immediately stop or start the current listener.
mcp.show_model_presetsbooleanWhether MCP model preset recommendations are shown.

code_maps — Global Code Maps toggle​

KeyTypeDetails
code_maps.globally_disabledbooleanWhen true, Code Maps are globally disabled and the MCP get_code_structure tool is suppressed.

Examples (MCP JSON)​

Each example shows the arguments object passed to app_settings:

// Browse the full catalog (values always included)
{ "op": "list" }

// Inspect one group
{ "op": "list", "group": "ui" }

// Batch read a few keys
{ "op": "get", "keys": ["ui.appearance_mode", "mcp.auto_start"] }

// Toggle a boolean
{ "op": "set", "key": "ui.show_tooltips", "value": false }

// Update an enum
{ "op": "set", "key": "ui.appearance_mode", "value": "Dark" }

// Clear an optional model (null is valid for nullable keys)
{ "op": "set", "key": "models.planning_model", "value": null }

// Change a numeric setting
{ "op": "set", "key": "models.temperature", "value": 1.25 }

// Switch the Context Builder agent (remembered model is preserved)
{ "op": "set", "key": "context_builder.agent", "value": "codexExec" }

// List candidate models for the current Context Builder backend
{ "op": "options", "key": "context_builder.model" }

// Narrow candidates to one CLI backend
{ "op": "options", "key": "models.planning_model", "agent": "codexExec", "limit": 25 }

Error Behavior​

  • Unknown keys: Rejected with a clear error. Call list (or list with a group) to discover the correct key.
  • Wrong types: Booleans, numbers, strings, and null are each validated against the entry's declared type.
  • Out-of-range values: Numeric ranges (e.g. models.temperature 0.0–2.0) and enum values are enforced.
  • No partial application: Validation fails closed — if any check fails, nothing is written.
  • One key per set: Passing keys or group on set is rejected.

Safety & Deliberately Excluded​

This surface is intentionally narrow. The following are not reachable through app_settings and must be managed in the Settings UI:

  • API credentials for any provider.
  • MCP tool ACLs and agent permission documents.
  • Workspace approvals and workspace-scoped chat/copy settings.
  • Agent-mode scalars and model override dictionaries.
  • Internal/migration-style flags and experimental toggles.

If a preference is dangerous, secret, or workspace-specific, it is kept UI-only by design. Agents can still discover what is reachable with op=list.

See Also​