dotfiles/dot_codex/private_config.toml
Anton Volnuhin 5b58460618 Track agent CLI configs, with codex secrets externalized
codex's config.toml held nine live API keys inline under
[mcp_servers.*.env] -- deepseek, gemini, kimi, mimo, qwen, glm, cursor,
an OpenAI key and a Home Assistant token -- so it could not be tracked
as it stood. TOML env tables take literal values only, with no ${VAR}
indirection or env_file, so the keys cannot simply be named there.

Move them to ~/.codex/secrets.env (0600, ignored) and route the four
affected servers through mcp-with-secrets.sh, which sources that file
and execs the real command. Doing it in the wrapper rather than relying
on exported shell vars means it does not depend on how codex handles
environment inheritance, and works on ssh-only boxes with no keychain or
1Password agent, which is why this was preferred over a chezmoi
template.

Adds configs for claude, codex, pi, grok, kimi, kimi-code and reasonix,
and extends .chezmoiignore so credentials, session logs, local state and
.bak files stay out even if a directory is ever added whole.

Held back for still containing live keys: opencode.json (bailian), and
reasonix config.json and .env.
2026-08-06 02:23:49 +03:00

438 lines
13 KiB
TOML

model = "gpt-5.6-sol"
model_reasoning_effort = "high"
personality = "pragmatic"
plan_mode_reasoning_effort = "xhigh"
sandbox_mode = "workspace-write"
service_tier = "priority"
notify = ["/Users/anton/.codex/computer-use/Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient", "turn-ended"]
[features]
hooks = true
apps = true
multi_agent = true
prevent_idle_sleep = true
memories = true
js_repl = false
[marketplaces.openai-bundled]
last_updated = "2026-07-28T17:16:25Z"
source_type = "local"
source = "/Users/anton/.codex/.tmp/bundled-marketplaces/openai-bundled"
[marketplaces.openai-primary-runtime]
last_updated = "2026-07-16T08:15:09Z"
source_type = "local"
source = "/Users/anton/.cache/codex-runtimes/codex-primary-runtime/plugins/openai-primary-runtime"
[marketplaces.claude-plugins-official]
last_updated = "2026-08-05T22:59:06Z"
last_revision = "0ad65e5d170c501235183be69c4e4be30a5f81d8"
source_type = "git"
source = "https://github.com/anthropics/claude-plugins-official.git"
[marketplaces.openai-codex]
last_updated = "2026-07-08T07:57:58Z"
last_revision = "db52e28f4d9ded852ab3942cea316258ae4ef346"
source_type = "git"
source = "https://github.com/openai/codex-plugin-cc.git"
[mcp_servers.agent-team-wiki]
url = "https://wiki.agent-team.ru/mcp"
[mcp_servers.codex-cli]
command = "npx"
args = ["-y", "codex-mcp-server"]
[mcp_servers.excalidraw]
url = "https://excalidraw-mcp-app.vercel.app/mcp"
[mcp_servers.glm]
command = "/Users/anton/.codex/mcp-with-secrets.sh"
args = ["node", "/Users/anton/dev/glm/scripts/glm-mcp.mjs"]
startup_timeout_sec = 15.0
tool_timeout_sec = 1200.0
[mcp_servers.glm.env]
[mcp_servers.glm.tools.glm_consult]
approval_mode = "approve"
[mcp_servers.glm.tools.glm_freeform]
approval_mode = "approve"
[mcp_servers.glm.tools.glm_review]
approval_mode = "approve"
[mcp_servers.multipoly]
command = "/Users/anton/.codex/mcp-with-secrets.sh"
args = ["node", "/Users/anton/dev/multipoly/scripts/multipoly-mcp.mjs"]
startup_timeout_sec = 15.0
tool_timeout_sec = 600.0
[mcp_servers.multipoly.env]
MULTIPOLY_AGY_CLI_KIND = "agy"
MULTIPOLY_AGY_ENABLED = "1"
MULTIPOLY_AGY_TRANSPORT = "cli"
MULTIPOLY_AGY_UNSAFE = "1"
MULTIPOLY_CLAUDE_CLI_KIND = "claude"
MULTIPOLY_CLAUDE_ENABLED = "1"
MULTIPOLY_CLAUDE_MODEL = "claude-opus-4-7"
MULTIPOLY_CLAUDE_TRANSPORT = "cli"
MULTIPOLY_CODEX_CLI_KIND = "codex"
MULTIPOLY_CODEX_ENABLED = "1"
MULTIPOLY_CODEX_MODEL = "gpt-5.5"
MULTIPOLY_CODEX_TRANSPORT = "cli"
MULTIPOLY_COMPOSER_ENABLED = "1"
MULTIPOLY_DEEPSEEK_BASE_URL = "https://api.deepseek.com"
MULTIPOLY_FABLE_CLI_KIND = "claude"
MULTIPOLY_FABLE_ENABLED = "1"
MULTIPOLY_FABLE_MODEL = "claude-fable-5"
MULTIPOLY_FABLE_TRANSPORT = "cli"
MULTIPOLY_GEMINI_BASE_URL = "https://generativelanguage.googleapis.com/v1beta/openai"
MULTIPOLY_GEMINI_MODEL = "gemini-3.5-flash"
MULTIPOLY_GEMINI_TRANSPORT = "http"
MULTIPOLY_GLM_MAX_TOKENS_REVIEW = "8192"
MULTIPOLY_GROK_CLI_KIND = "grok"
MULTIPOLY_GROK_ENABLED = "1"
MULTIPOLY_GROK_MODEL = "grok-4.5"
MULTIPOLY_GROK_TRANSPORT = "cli"
MULTIPOLY_KIMI_BASE_URL = "https://api.kimi.com/coding"
MULTIPOLY_KIMI_MAX_TOKENS_CONSULT = "65536"
MULTIPOLY_KIMI_MODEL = "kimi-k.3.0"
MULTIPOLY_KIMI_REASONING = "kimi_toggle"
MULTIPOLY_KIMI_TRANSPORT = "anthropic"
MULTIPOLY_MIMO_BASE_URL = "https://token-plan-sgp.xiaomimimo.com/v1"
MULTIPOLY_MIMO_MAX_TOKENS_REVIEW = "8192"
MULTIPOLY_MIMO_MODEL = "mimo-v2.5-pro"
MULTIPOLY_MIMO_TRANSPORT = "http"
MULTIPOLY_MODELS = "kimi,gemini,claude,codex,agy,mimo,grok,fable"
MULTIPOLY_QWEN_BASE_URL = "https://ws-duxbs2mi0ocqxzxp.eu-central-1.maas.aliyuncs.com/compatible-mode/v1"
MULTIPOLY_QWEN_MODEL = "qwen3.7-max"
MULTIPOLY_TIMEOUT_MS = "3600000"
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/"
bearer_token_env_var = "CODEX_GITHUB_PERSONAL_ACCESS_TOKEN"
[mcp_servers.ha-mcp]
url = "http://192.168.39.90:8086/mcp"
[mcp_servers.home-assistant]
command = "/Users/anton/.codex/mcp-with-secrets.sh"
args = ["uvx", "ha-mcp@latest"]
[mcp_servers.home-assistant.env]
HOMEASSISTANT_URL = "http://192.168.39.50"
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
[mcp_servers.playwright.tools.browser_run_code]
approval_mode = "approve"
[mcp_servers.playwright.tools.browser_tabs]
approval_mode = "approve"
[mcp_servers.node_repl]
args = []
command = "/Applications/Codex.app/Contents/Resources/cua_node/bin/node_repl"
startup_timeout_sec = 120
[mcp_servers.node_repl.env]
NODE_REPL_NATIVE_PIPE_CONNECT_TIMEOUT_MS = "1000"
NODE_REPL_NODE_MODULE_DIRS = "/Applications/Codex.app/Contents/Resources/cua_node/lib/node_modules"
NODE_REPL_NODE_PATH = "/Applications/Codex.app/Contents/Resources/cua_node/bin/node"
NODE_REPL_TRUSTED_CODE_PATHS = "/Users/anton/.codex"
CODEX_HOME = "/Users/anton/.codex"
NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S = "583bf903a6cfb9b00a01e1583381ce921c71d7585085c6fa6b805baa0f60230b,6d25aa7656feac858f3a3bdaea5bcbab0dbfd426c9de8e6931ce90c399ee8e4f"
BROWSER_USE_AVAILABLE_BACKENDS = "chrome,iab"
NODE_REPL_INSTRUCTIONS_USE_CASE_BROWSER = "Control the in-app browser in conjunction with the Browser Plugin."
NODE_REPL_INSTRUCTIONS_USE_CASE_CHROME = "Control the Chrome browser in conjunction with the Chrome Plugin. Prefer this method of controlling Chrome over alternatives (such as Computer Use) unless the user explicitly mentions an alternative."
NODE_REPL_INSTRUCTIONS_USE_CASE_COMPUTER_USE = "Control desktop apps on macOS through Computer Use."
BROWSER_USE_CODEX_APP_BUILD_FLAVOR = "prod"
BROWSER_USE_CODEX_APP_VERSION = "26.715.52143"
SKY_CUA_SERVICE_PATH = "/Users/anton/.codex/plugins/cache/openai-bundled/computer-use/1.0.1000451/Codex Computer Use.app"
CODEX_CLI_PATH = "/Applications/Codex.app/Contents/Resources/codex"
[mcp_servers.hallucination-detector]
command = "/Users/anton/.codex/mcp-with-secrets.sh"
args = ["hallucination-detector-mcp"]
[mcp_servers.hallucination-detector.env]
[mcp_servers.flint]
command = "npx"
args = ["-y", "flint-chart-mcp"]
[mcp_servers.computer-use]
command = "./Codex Computer Use.app/Contents/SharedSupport/SkyComputerUseClient.app/Contents/MacOS/SkyComputerUseClient"
args = ["mcp"]
cwd = "."
enabled = false
[mcp_servers.openaiDeveloperDocs]
url = "https://developers.openai.com/mcp"
[notice]
hide_rate_limit_model_nudge = true
[notice.model_migrations]
"gpt-5.2-codex" = "gpt-5.4"
[plugins."canva@openai-curated"]
enabled = true
[plugins."documents@openai-primary-runtime"]
enabled = true
[plugins."github@openai-curated"]
enabled = true
[plugins."presentations@openai-primary-runtime"]
enabled = true
[plugins."spreadsheets@openai-primary-runtime"]
enabled = true
[plugins."frontend-design@claude-plugins-official"]
enabled = true
[plugins."github@claude-plugins-official"]
enabled = true
[plugins."playwright@claude-plugins-official"]
enabled = true
[plugins."superpowers@claude-plugins-official"]
enabled = true
[plugins."codex@openai-codex"]
enabled = true
[plugins."pdf@openai-primary-runtime"]
enabled = true
[plugins."clangd-lsp@claude-plugins-official"]
enabled = true
[plugins."rust-analyzer-lsp@claude-plugins-official"]
enabled = true
[plugins."template-creator@openai-primary-runtime"]
enabled = true
[plugins."computer-use@openai-bundled"]
enabled = true
[plugins."chrome@openai-bundled"]
enabled = true
[plugins."visualize@openai-bundled"]
enabled = true
[plugins."sites@openai-bundled"]
enabled = true
[plugins."browser@openai-bundled"]
enabled = true
[projects."/"]
trust_level = "trusted"
[projects."/Users/anton"]
trust_level = "trusted"
[projects."/Users/anton/.local/share/chezmoi"]
trust_level = "trusted"
[projects."/Users/anton/dev/aictrl"]
trust_level = "trusted"
[projects."/Users/anton/dev/aictrl-upstreamm"]
trust_level = "trusted"
[projects."/Users/anton/dev/claude-sync"]
trust_level = "trusted"
[projects."/Users/anton/dev/codex-switcher"]
trust_level = "trusted"
[projects."/Users/anton/dev/ha-assistant"]
trust_level = "trusted"
[projects."/Users/anton/dev/kitty"]
trust_level = "trusted"
[projects."/Users/anton/dev/metaai"]
trust_level = "trusted"
[projects."/Users/anton/dev/moneystat"]
trust_level = "untrusted"
[projects."/Users/anton/dev/mosh"]
trust_level = "trusted"
[projects."/Users/anton/dev/summarizer"]
trust_level = "trusted"
[projects."/Users/anton/dev/translate-podcast"]
trust_level = "trusted"
[projects."/Users/anton/dev/vless"]
trust_level = "trusted"
[projects."/Users/anton/prj/aictrl"]
trust_level = "trusted"
[projects."/Users/anton/prj/papers"]
trust_level = "trusted"
[projects."/Users/anton/prj/tagir-talk"]
trust_level = "trusted"
[projects."/Users/anton/dev/r7-project"]
trust_level = "trusted"
[projects."/Users/anton/dev/glm"]
trust_level = "trusted"
[projects."/Users/anton/dev/mikrotik"]
trust_level = "trusted"
[projects."/Users/anton/dev/page-summarizer"]
trust_level = "trusted"
[projects."/Users/anton/dev/ipranges"]
trust_level = "trusted"
[projects."/Users/anton/dev/multipoly"]
trust_level = "trusted"
[projects."/Users/anton/dev/librestat"]
trust_level = "trusted"
[sandbox_workspace_write]
network_access = true
[tui]
status_line = [
"model-with-reasoning",
"context-remaining",
"current-dir",
"model-name",
"project-root",
"git-branch",
"context-used",
"five-hour-limit",
]
[tui.model_availability_nux]
"gpt-5.5" = 4
"gpt-5.6-sol" = 4
[memories]
generate_memories = true
use_memories = true
[hooks.state]
[hooks.state."/Users/anton/.codex/hooks.json:pre_tool_use:0:0"]
enabled = true
trusted_hash = "sha256:b61eb845f14a50e8e24c5435f84cb7b62cea9549c0acebe0c037a2ad94260f02"
[hooks.state."codex@openai-codex:hooks/hooks.json:session_start:0:0"]
trusted_hash = "sha256:e6b9df143de11443eb576c38874cf6e0c48358f948170948fdf630f1c047c098"
[hooks.state."codex@openai-codex:hooks/hooks.json:stop:0:0"]
trusted_hash = "sha256:3dfaa7e4f022570b260b8a8cf4ac7585c986175256b887a4723fac4f358a482f"
[hooks.state."superpowers@claude-plugins-official:hooks/hooks.json:session_start:0:0"]
enabled = false
trusted_hash = "sha256:62acbaff2b2f55f41971e21a164990aaa53c96919baa0a5eae2eb5db73b9e6e6"
[hooks.state."/Users/anton/.codex/hooks.json:pre_tool_use:1:0"]
trusted_hash = "sha256:bac831afc7106356964ac55df1e35367ef956e914a282cb645284ad23e648c57"
[hooks.state."/Users/anton/.codex/hooks.json:post_tool_use:0:0"]
trusted_hash = "sha256:f8b3aaf328b64e79eb5f0759d6bf2f4ac1136c24cf67a8887bb92f2bb63c26a4"
[hooks.state."/Users/anton/.codex/hooks.json:session_start:0:0"]
trusted_hash = "sha256:07a21ec47290f101a3b4e457df0b2a81ff7e5080f5a40e681b8514b8317f2214"
[hooks.state."/Users/anton/.codex/hooks.json:user_prompt_submit:0:0"]
trusted_hash = "sha256:a7bc3022efbd14a0b526e36d875aeb601cf0b0ed736a6b6d539ecaeb242194d8"
[hooks.state."/Users/anton/.codex/hooks.json:stop:0:0"]
trusted_hash = "sha256:a654fceae87e9d7f8d679bdd93eb083ab200c5d91bc699d71b5ef7b5a3c71f47"
[hooks.state."superpowers@claude-plugins-official:hooks/hooks-codex.json:session_start:0:0"]
enabled = false
trusted_hash = "sha256:687e7af87f0cb59b1bcc71d368e097304b45d84999c90dc97358a22811691a3f"
[hooks.state."/Users/anton/.codex/hooks.json:session_start:1:0"]
trusted_hash = "sha256:0094ae0b175bc5ea2874124bf4140ab0e2c00c8b6ea37980ede20d1e13418b19"
[hooks.state."codex@openai-codex:hooks/hooks.json:session_end:0:0"]
trusted_hash = "sha256:bc55a03ac0094c5deb4af95c405b75b34735f318b3d9bd64a2f9902973861606"
[desktop]
appearanceTheme = "system"
appearanceLightCodeThemeId = "codex"
appearanceDarkCodeThemeId = "gruvbox"
sansFontSize = 15
codeFontSize = 14
usePointerCursors = false
followUpQueueMode = "steer"
preventSleepWhileRunning = false
keepRemoteControlAwakeWhilePluggedIn = true
conversationDetailMode = "STEPS_COMMANDS"
mac-menu-bar-enabled = false
dock-icon-preference = "codex-system"
[desktop.appearanceLightChromeTheme]
accent = "#0169cc"
contrast = 45
ink = "#0d0d0d"
opaqueWindows = true
surface = "#ffffff"
[desktop.appearanceLightChromeTheme.fonts]
[desktop.appearanceLightChromeTheme.semanticColors]
diffAdded = "#00a240"
diffRemoved = "#e02e2a"
skill = "#751ed9"
[desktop.appearanceDarkChromeTheme]
accent = "#458588"
contrast = 60
ink = "#ebdbb2"
opaqueWindows = false
surface = "#282828"
[desktop.appearanceDarkChromeTheme.fonts]
[desktop.appearanceDarkChromeTheme.semanticColors]
diffAdded = "#ebdbb2"
diffRemoved = "#cc241d"
skill = "#b16286"
[desktop.open-in-target-preferences]
global = "sublimeText"
[[skills.config]]
path = "/Users/anton/.codex/plugins/cache/claude-plugins-official/superpowers/6.0.3/skills/using-superpowers/SKILL.md"
enabled = false
[[skills.config]]
path = "/Users/anton/.codex/plugins/cache/claude-plugins-official/superpowers/6.0.3/skills/brainstorming/SKILL.md"
enabled = false
[shell_environment_policy.set]
BROWSER_USE_AVAILABLE_BACKENDS = "chrome,iab"
NODE_REPL_TRUSTED_BROWSER_CLIENT_SHA256S = "583bf903a6cfb9b00a01e1583381ce921c71d7585085c6fa6b805baa0f60230b,6d25aa7656feac858f3a3bdaea5bcbab0dbfd426c9de8e6931ce90c399ee8e4f"
NODE_REPL_TRUSTED_CODE_PATHS = "/Users/anton/.codex"