Skip to content

Settings

Persistent configuration is split so install upgrades stay safe and permission rules stay lean:

PathHolds
~/.hipmmcode/config.jsonModels, API keys, MCP, UI, provider presets (0600 — can hold secrets)
~/.hipmmcode/settings.jsonClaude-compatible permissions (defaultMode, allow/deny/ask), hooks, and related policy (preferred for rules)
Project .hipmmcode/settings.json / .settings.local.jsonProject / local overrides

You rarely edit by hand:

bash
hipmmcode config show                # full config, secrets redacted
hipmmcode config set KEY=VALUE       # set any key
hipmmcode config providers           # list built-in channel presets

Inside the REPL, /config key=value (alias /settings) does the same live.

First-run seeds (v0.14.1+)

If ~/.hipmmcode/settings.json is missing, hipmmcode creates a minimal file:

json
{
  "permissions": {
    "defaultMode": "auto"
  }
}

If the release includes default-skills/, the L1 pack is synced into ~/.hipmmcode/skills/ on first launch (or via hipmmcode skill install-defaults). See Skills and Permissions.

Updating the binary keeps these user files. It does not reset keys, and does not re-download historical allow-list junk into config.json.

Core keys

KeyDefaultDescription
defaultProvideropenaiDefault channel id
defaultModelgpt-4o-miniDefault model id
<provider>.apiKeyAPI key per channel (anthropic.apiKey=sk-ant-...)
<provider>.modelsdynamicComma-separated model whitelist for a channel
<provider>.modelOverride.<model>.contextWindowOverride a model's context window (tokens)
<provider>.modelOverride.<model>.maxOutputTokensOverride a model's max output
fallbackModel / fallbackModelsUp to 3 models tried in order when the primary is overloaded
apiKeyHelperShell command that prints an API key (for vaults / short-lived creds)
effort (reasoningEffort)provider defaultReasoning effort: deepseek-anthropic defaults to max; Codex-backed channels default to high; other channels default to off
languagePreferred response language (free-form)
activeLegionLegion active by default (see Agent teams)

UI & terminal

KeyDefaultDescription
tuifullscreenStartup renderer: fullscreen or inline
hudStylenativeBottom HUD: native / compact / force-native
colorThemedefaultColor theme (see /color)
editorModenormalInput editing: normal (emacs) or vim
defaultShellhost defaultShell for ! bang commands: bash / powershell
statusLineCommandExternal status-line command (replaces built-in HUD)
statusLinePaddingPadding for the external status line
subagentStatusLineCommandPer-teammate status line
timestampsfalsePer-message timestamps in the transcript
tipstrueRotating shortcut hints under the input
terminalTitletrueSession status in the terminal tab title
terminalTitleFromRenametrueUse the /rename name in the title
terminalProgresstrueTerminal progress indicator during turns
notifyOnDonefalseNotify when a turn finishes unfocused
notifyOnInputNeededfalseNotify when a permission prompt opens unfocused
notifyChannelautoauto / iterm2 / iterm2_with_bell / terminal_bell / kitty / ghostty / off
awayRecaptrue"Welcome back" summary after ≥5 min idle
teamMatePreviewtruePersistent teammate preview row
verbosefalseVerbose output
showWarningsfalseShow WARN-level log lines
outputStyleActive response output style
diffToolExternal tool for /diff (vscode, meld, vimdiff, …)
userAliases{}Personal slash-command aliases (managed by /alias)

Behavior & safety

KeyDefaultDescription
bashPromptForWritestrueConfirm state-changing shell commands
confirmOutsideWorkspacetrueConfirm file access outside cwd / added dirs
permissions{}Allow/deny/ask rules (prefer settings.json for defaultMode) — see Permissions
hooks{}Lifecycle hooks — see Hooks
sandbox.*offOS-level bash sandbox — see Permissions
autoModeAutonomous-mode rules { allow, hard_deny, classifierModel }
trustedDirs[]Directories you've accepted the trust dialog for
worktreeBaseRefheadWorktree base: head or fresh (origin default branch)

Memory & context

KeyDefaultDescription
autoMemoryEnabledtrueMaster gate for persistent memory (read + write)
autoMemoryOnExittrueExtract memories at /exit
autoMemoryOnExecfalseExtract memories after headless runs
autoMemoryOnEveryTurnfalseExtract after every turn (token-hungry)
memoryRelevanceSelectorfalseLLM-based memory file selection
autoCompactEnabledtrueAuto-compaction near the context ceiling
autoCompactWindowForce compaction earlier (token cap). v0.11.0+: Also configurable via native HIPMMCODE_AUTO_COMPACT_WINDOW; legacy CLAUDE_CODE_AUTO_COMPACT_WINDOW is an absent-only fallback (clamped to 100k–1M, applied as min(override, model_context))
apiMicrocompactEnabledtrueEvict stale tool results before full compaction. v0.11.0+: Preserves tool_result blocks with image/document attachments
instructionExcludes[]Glob patterns excluded from instruction loading

Agents & orchestration

KeyDefaultDescription
teamMateDefaultModelModel for spawned teammates (leader = inherit)
advisorModelSecond-opinion model for the Advisor tool
advisorfalseProactively consult the advisor before major work
autoJudgefalseAuto-judge teammate results
goalEvaluatorModelCheap model that verifies /goal conditions
goalMaxContinuations25Max auto-continuations for /goal
KeyDefaultDescription
anysearchApiKeyAnySearch key — enables WebSearch on channels without native search
anysearchEnabledautoAnySearch on/off (auto-on when a key is set)
nativeSearchEnabledtrueAllow provider-native search; off forces AnySearch everywhere

See Web search.

MCP

KeyDefaultDescription
mcpServers{}User-scope MCP servers
projectMcpServers{}Local-scope servers (per project)
projectMcpApprovals{}Trust decisions for project .mcp.json servers
mcpDisabled[]Servers disabled via /mcp disable
mcpSyncFromClaudetrueAuto-import externally configured MCP servers

See MCP servers.

Compatibility

KeyDefaultDescription
claudeCodeCompatfalseAdopt the .claude ecosystem: ~/.claude/settings.json layers (user → project → local → managed), ~/.claude/skills, .claude/agents, MCP server import, CLAUDE.md instructions

With compat on, settings merge in layers (low → high): hipmmcode config → user settings → project settings → local settings → managed/policy settings → CLI flags. --settings <file|json> injects one more layer from the command line; --setting-sources user,project,local restricts which layers load.

CLAUDE_CONFIG_DIR still selects the independent Claude compatibility tree used for importing CLAUDE.md, .claude-plugin/, Claude hooks/MCP, and other read-only Claude assets (default ~/.claude).

From v0.16.0, when HIPMMCODE_CONFIG_DIR is unset, CLAUDE_CONFIG_DIR is also accepted as a fallback for HiPMMCode's native root — so Claude-Code-compatible / Grok launches that only set CLAUDE_CONFIG_DIR land state in one place. If both are set, native writes stay under HIPMMCODE_CONFIG_DIR and Claude-compat reads still use CLAUDE_CONFIG_DIR.

Environment variables

The native configuration root is resolved as:

HIPMMCODE_CONFIG_DIR → else CLAUDE_CONFIG_DIR (v0.16.0+) → else HIPMMCODE_HOME → else ~/.hipmmcode.

Use HIPMMCODE_* for HiPMMCode-owned controls. Where a legacy CLAUDE_* / CLAUDE_CODE_* spelling is listed, it is consulted only when the native variable is absent (except CLAUDE_CONFIG_DIR, which is an intentional native-root fallback when HIPMMCODE_CONFIG_DIR is unset). A present native value (including false, 0, empty, or malformed) is authoritative and cannot expose a conflicting legacy value.

VariableDescription
HIPMMCODE_DEFAULT_PROVIDER / HIPMMCODE_DEFAULT_MODELOverride the default provider/model without editing config.json — always wins over the on-disk default
ANTHROPIC_MODELCompat shim: same as HIPMMCODE_DEFAULT_MODEL, but only applied when the resolved default provider is Anthropic-protocol (so it can't hijack an unrelated OpenAI-compat default). HIPMMCODE_DEFAULT_MODEL wins if both are set
ANTHROPIC_BASE_URLCompat shim: overrides the native anthropic channel only (for example, a relay). It never overrides deepseek-anthropic, qwen-anthropic, or qwen-token-plan-anthropic. An explicit custom.<id>.baseUrl in config.json still wins
ANTHROPIC_AUTH_TOKENCompat shim: bearer-token alias for the native anthropic channel only — tried after ANTHROPIC_API_KEY if both are set
OPENAI_API_KEY ANTHROPIC_API_KEY GEMINI_API_KEY DEEPSEEK_API_KEY KIMI_API_KEYProvider keys (fallback when no stored key)
QWENCLOUD_TOKEN_PLAN_API_KEY / QWEN_TOKEN_PLAN_API_KEYDedicated sk-sp-... credential for qwen-token-plan / qwen-token-plan-anthropic; prefer Alibaba's official QWENCLOUD_TOKEN_PLAN_API_KEY, while the latter is a HiPMMCode compatibility alias; never falls back to pay-as-you-go credentials
DASHSCOPE_API_KEY / QWEN_API_KEYPay-as-you-go credential for qwen / qwen-anthropic; QWEN_API_KEY is the legacy alias. Use sk-... or sk-ws-..., never a Token Plan sk-sp-... key
<CUSTOM_ID>_API_KEYKey for a custom channel (uppercased id)
GOOGLE_API_KEY GH_TOKEN GITHUB_TOKEN GLM_API_KEYConventional per-channel fallbacks — catalog channels also accept the alternate env-var names their upstream ecosystems use (see Model channels)
AWS_BEARER_TOKEN_BEDROCKBearer-token auth for the bedrock channel
HIPMMCODE_PTY_PER_AGENT / _PER_THREAD / _PER_WORKSPACE / _PER_TENANT / HIPMMCODE_MAX_PTY_SESSIONSQuota limits for exec_command interactive terminal sessions (defaults 2/4/8/16/64)
HIPMMCODE_TENANT_ID / HIPMMCODE_WORKSPACE_ROOThipmmcode serve multi-tenant identity / workspace cwd containment — see Server
ANYSEARCH_API_KEY / ANYSEARCH_KEYAnySearch key
HIPMMCODE_CONFIG_DIRHighest-priority override for the native configuration/state root
CLAUDE_CONFIG_DIRClaude compatibility tree (always). v0.16.0+: also selects the native root when HIPMMCODE_CONFIG_DIR is unset
HIPMMCODE_HOMESupported whole-tree root override, used when neither HIPMMCODE_CONFIG_DIR nor CLAUDE_CONFIG_DIR is set
HIPMMCODE_TEAMS_ROOTOverride just the teams directory
HIPMMCODE_VIDEO_MAX_MBInline video size cap (default 32)
HIPMMCODE_SANDBOX (+ _NETWORK, _WRITABLE, _HIDE, _FAIL)OS sandbox switches — see Permissions
HIPMMCODE_DISABLE_MICROCOMPACTDisable micro-compaction
HIPMMCODE_EXPERIMENTAL_FLAG / HIPMMCODE_EXPERIMENTAL_<NAME>Experimental flags master switch / per-flag gate (hipmmcode flags)
VISUAL / EDITOREditor for /editor and /memory
RUST_LOGTracing filter (debug logging)

Native-first Claude compatibility aliases

Every row uses the same absent-only rule described above.

Native variableLegacy fallbackPurpose
HIPMMCODE_ADDITIONAL_DIRECTORIES_CLAUDE_MDCLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MDLoad compatible instructions from --add-dir directories
HIPMMCODE_AGENT_SDK_DISABLE_BUILTIN_AGENTSCLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTSDisable bundled agent profiles
HIPMMCODE_API_KEY_HELPER_TTL_MSCLAUDE_CODE_API_KEY_HELPER_TTL_MSAPI-key helper cache lifetime
HIPMMCODE_AUTO_COMPACT_WINDOWCLAUDE_CODE_AUTO_COMPACT_WINDOWAuto-compaction context window (100k–1M)
HIPMMCODE_AUTOCOMPACT_PCT_OVERRIDECLAUDE_AUTOCOMPACT_PCT_OVERRIDEAuto-compaction percentage override
HIPMMCODE_DISABLE_1M_CONTEXTCLAUDE_CODE_DISABLE_1M_CONTEXTDisable the 1M context tier
HIPMMCODE_DISABLE_AUTO_MEMORYCLAUDE_CODE_DISABLE_AUTO_MEMORYDisable automatic persistent memory
HIPMMCODE_DISABLE_BACKGROUND_TASKSCLAUDE_CODE_DISABLE_BACKGROUND_TASKSDisable background tasks
HIPMMCODE_DISABLE_THINKINGCLAUDE_CODE_DISABLE_THINKINGDisable reasoning-effort escalation
HIPMMCODE_EFFORT_LEVELCLAUDE_CODE_EFFORT_LEVELSet the model effort level
HIPMMCODE_FILE_READ_MAX_OUTPUT_TOKENSCLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENSBound selected Read output
HIPMMCODE_IDE_HOST_OVERRIDECLAUDE_CODE_IDE_HOST_OVERRIDEOverride the IDE MCP bridge host
HIPMMCODE_MAX_OUTPUT_TOKENSCLAUDE_CODE_MAX_OUTPUT_TOKENSBound headless output
HIPMMCODE_MAX_SUBAGENTS_PER_SESSIONCLAUDE_CODE_MAX_SUBAGENTS_PER_SESSIONSession Agent quota
HIPMMCODE_MAX_TOOL_USE_CONCURRENCYCLAUDE_CODE_MAX_TOOL_USE_CONCURRENCYParallel tool-call limit
HIPMMCODE_MAX_WEB_SEARCHES_PER_SESSIONCLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSIONSession WebSearch quota
HIPMMCODE_MCP_TOOL_IDLE_TIMEOUTCLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUTRemote MCP idle timeout
HIPMMCODE_PROCESS_WRAPPERCLAUDE_CODE_PROCESS_WRAPPERValidated daemon self-spawn wrapper
HIPMMCODE_SAFE_MODECLAUDE_CODE_SAFE_MODEDisable customizations for troubleshooting
HIPMMCODE_SIMPLECLAUDE_CODE_SIMPLESkip instruction/MCP/hook/plugin discovery
HIPMMCODE_SSE_PORTCLAUDE_CODE_SSE_PORTForce the IDE bridge port
HIPMMCODE_SUBAGENT_MODELCLAUDE_CODE_SUBAGENT_MODELOverride the Agent model

Child-process protocol variables

Protocol interoperability is intentionally dual-name rather than fallback-only. HiPMMCode exports native fields such as HIPMMCODE_SESSION_ID, HIPMMCODE_EFFORT, HIPMMCODE_PROJECT_DIR, HIPMMCODE_PLUGIN_ROOT, and HIPMMCODE_PLUGIN_DATA; compatible hooks/plugins/helpers may also receive their CLAUDE_* counterparts. Skills expand both ${HIPMMCODE_*} and the corresponding ${CLAUDE_*} placeholders to the same native-resolved values.

File map

<native-config-root>/
├── config.json          # everything above
├── sessions/            # one JSON per session
├── projects/<key>/memory/   # persistent memory per project
├── agents/              # your agent profiles (*.md)
├── skills/              # installed skills
├── legions/<name>/      # legion bundles (agents + skills)
├── teams/<name>/        # team state: config, inboxes, tasks
├── plugins/             # installed plugins
└── direct-connect.json  # serve discovery lockfile

<native-config-root> means HIPMMCODE_CONFIG_DIR, else CLAUDE_CONFIG_DIR (v0.16.0+), else HIPMMCODE_HOME, else ~/.hipmmcode.

Project-level files HiPMMCode reads natively include .mcp.json, HIPMMCODE.md, .hipmmcode/commands/, .hipmmcode/agents/, .hipmmcode/rules/, and .hipmmcode/scheduled_tasks.json. Compatibility inputs include AGENTS.md, CLAUDE.md, .claude/commands/, .claude/agents/, .claude/rules/, and a legacy .claude/scheduled_tasks.json only when the native cron file is absent. External plugin manifests keep the .claude-plugin/ protocol name.