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.
327 lines
19 KiB
JSON
327 lines
19 KiB
JSON
{
|
||
"cleanupPeriodDays": 36500,
|
||
"includeCoAuthoredBy": false,
|
||
"permissions": {
|
||
"allow": [
|
||
"Bash(tree:*)",
|
||
"Bash(wc:*)",
|
||
"Bash(head:*)",
|
||
"Bash(pdftotext:*)",
|
||
"Bash(python3:*)",
|
||
"Bash(source .venv/bin/activate)",
|
||
"Skill(superpowers:executing-plans)",
|
||
"Bash(python validate_data.py:*)",
|
||
"Bash(./process_month.sh:*)",
|
||
"Bash(bash:*)",
|
||
"Bash(ls:*)",
|
||
"Bash(python processing-step.py:*)",
|
||
"Bash(tr:*)",
|
||
"Bash(python3.12:*)",
|
||
"Bash(/opt/homebrew/bin/python3:*)",
|
||
"Bash(python tbank_process.py:*)",
|
||
"Bash(python freedom-pdf-to-csv-converter.py:*)",
|
||
"Bash(python xls_to_csv.py:*)",
|
||
"Bash(python:*)",
|
||
"WebSearch",
|
||
"Bash(grep:*)",
|
||
"Bash(git add:*)",
|
||
"Bash(git commit -m \"$\\(cat <<''EOF''\nImprove data processing pipeline with better parsing and validation\n\n- Fix number format: use dot decimal separator consistently across all processors\n- Fix date formats: standardize to DD.MM.YYYY in source files, YYYY-MM-DD in consolidated\n- Add transaction filtering: exclude internal transfers, currency exchanges, income\n- Parse merchant/location from Freedom, Raiffeisen, Bakai, Yandex descriptions\n- Preserve operation types in comment field \\(no info loss rule\\)\n- Fix Freedom dates: Date column is processing_date, extract transaction_date from Payment_Purpose\n- Upgrade Yandex PDF converter to gemini-3-flash-preview for better OCR\n- Add raiffeisen_process.py for number format normalization\n- Add test-run.md documenting all processing steps and fixes\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||
"Bash(echo \"=== Checking if unmatched receipts have matching pairs ===\" echo \"\" echo \"Unmatched 2775.0 \\(Dec 4\\):\" grep -l \"2775\" /Users/anton/dev/moneystat/processing/2025-12/receipts/ozon/anton/*.json)",
|
||
"Bash(while read f)",
|
||
"Bash(do jq '{date: .date, amount: .total_amount, payment: .payment_method}' \"$f\" done echo \"\" echo \"Unmatched 3841.0 \\(Dec 14\\):\" grep -l \"3841\" /Users/anton/dev/moneystat/processing/2025-12/receipts/ozon/anton/*.json)",
|
||
"Bash(do jq '{date: .date, amount: .total_amount, payment: .payment_method}' \"$f\" done echo \"\" echo \"Unmatched 972, 1373 \\(Dec 29\\):\" for amt in 972 1373)",
|
||
"Bash(do grep -l \"$amt\" /Users/anton/dev/moneystat/processing/2025-12/receipts/ozon/anton/*.json)",
|
||
"Bash(do jq '{date: .date, amount: .total_amount, payment: .payment_method}' \"$f\" done done echo \"\" echo \"Unmatched 957 \\(Dec 30\\):\" grep -l \"957\" /Users/anton/dev/moneystat/processing/2025-12/receipts/ozon/anton/*.json)",
|
||
"Bash(find:*)",
|
||
"Bash(xargs:*)",
|
||
"Bash(sort:*)",
|
||
"Bash(for f in *.json)",
|
||
"Bash(do echo -n \"$f: \")",
|
||
"Bash(done)",
|
||
"Bash(for f in data/2025-12/receipts/apple/RUB-Anton/*.eml:*)",
|
||
"Bash(do)",
|
||
"Bash(cat:*)",
|
||
"Bash(git commit:*)",
|
||
"Bash(pip3 list:*)",
|
||
"Bash(echo:*)",
|
||
"Bash(source venv/bin/activate)",
|
||
"Bash(git push)",
|
||
"Bash(for f in \"data/2025-11/receipts/grab/Your Grab E-Receipt 2.eml\" \"data/2025-11/receipts/grab/Your Grab E-Receipt 5.eml\")",
|
||
"Bash(for f in data/2025-11/receipts/grab/*.eml)",
|
||
"Bash(__NEW_LINE_7bc163cf2bda176a__ echo \"\")",
|
||
"Bash(__NEW_LINE_9da33bceca79eb86__ echo \"\")",
|
||
"Bash(pip show:*)",
|
||
"Bash(uv pip install:*)",
|
||
"Bash(do cat \"$f\")",
|
||
"Bash(jq:*)",
|
||
"Bash(plutil:*)",
|
||
"Bash(pip install:*)",
|
||
"Bash(.venv/bin/pip install:*)",
|
||
"Bash(.venv/bin/python:*)",
|
||
"Bash(pdfinfo:*)",
|
||
"Bash(__NEW_LINE_4acfd7b3af874ff7__ echo \"\")",
|
||
"Bash(# Check final consolidated file for duplicates wc -l processing/2025-11/*.csv)",
|
||
"Bash(# Check for TBank duplicates in consolidated file grep -c \"\"tbank\"\" processing/2025-11/consolidated.csv || echo \"\"No tbank found\"\" # Check unique vs total TBank rows echo \"\"=== TBank rows in consolidated ===\"\" grep \"\"tbank\"\" processing/2025-11/consolidated.csv)",
|
||
"Bash(__NEW_LINE_49e63631a274ada1__ echo \"=== Unique TBank rows \\(by date+amount+description\\) ===\")",
|
||
"Bash(# Check December for similar issues ls -la processing/2025-12/tbank* || echo \"\"No tbank files in December\"\" echo \"\"\"\" echo \"\"=== TBank rows in December consolidated ===\"\" grep -c \"\"tbank\"\" processing/2025-12/consolidated.csv || echo \"\"No consolidated.csv\"\" echo \"\"\"\" echo \"\"=== Unique TBank rows in December ===\"\" grep \"\"tbank\"\" processing/2025-12/consolidated.csv)",
|
||
"Bash(# Check for duplicates by source in consolidated file echo \"\"=== November 2025 ===\"\" echo \"\"Raiffeisen rows:\"\" grep -c \"\"raiffeisen\"\" processing/2025-11/consolidated.csv || echo \"\"0\"\" echo \"\"Freedom rows:\"\" grep -c \"\"freedom\"\" processing/2025-11/consolidated.csv || echo \"\"0\"\" echo \"\"\"\" echo \"\"=== All processed files in November ===\"\" ls -la processing/2025-11/*.processed.csv)",
|
||
"Bash(cd /Users/anton/dev/moneystat echo \"=== Source files in data/2025-12 ===\" find data/2025-12 -name \"*.csv\" -o -name \"*.pdf\")",
|
||
"Bash(__NEW_LINE_8b3f2148807d3dea__ echo \"\")",
|
||
"Bash(__NEW_LINE_d3565e1917fc1e0c__ echo \"=== data/2025-12 structure ===\")",
|
||
"Bash(__NEW_LINE_d3565e1917fc1e0c__ echo \"\")",
|
||
"Bash(__NEW_LINE_b4a495b4f804ce33__ echo \"=== Freedom source files ===\")",
|
||
"Bash(__NEW_LINE_b4a495b4f804ce33__ echo \"\")",
|
||
"Bash(__NEW_LINE_9b873e71c557a635__ echo \"=== December 2025: Source files vs Consolidated ===\")",
|
||
"Bash(__NEW_LINE_9b873e71c557a635__ echo \"\")",
|
||
"Bash(__NEW_LINE_a6dec1f39c81c8c3__ echo \"=== Freedom USD current file ===\")",
|
||
"Bash(__NEW_LINE_a6dec1f39c81c8c3__ echo \"\")",
|
||
"Bash(__NEW_LINE_8cb166f3ad9c1f18__ python3 -c \"\nimport pandas as pd\nf = ''processing/2025-12/freedom-legal_statement_2025-12-01_2025-12-31_current_1769192100-usd.processed.csv''\ndf = pd.read_csv\\(f\\)\nprint\\(f''Actual records: {len\\(df\\)}''\\)\nprint\\(f''Columns: {list\\(df.columns\\)}''\\)\n\")",
|
||
"Bash(cd /Users/anton/dev/moneystat:*)",
|
||
"Bash(__NEW_LINE_52b89477ddfdbf8d__ python3 -c \"\nimport pandas as pd\n\n# Check total sum in consolidated\ndf = pd.read_csv\\(''processing/2025-12/consolidated.csv''\\)\nprint\\(f''Total records: {len\\(df\\)}''\\)\nprint\\(f''Total RUB amount: {df[\"\"amount_rub\"\"].sum\\(\\):,.2f}''\\)\n\n# By source\nfor source in df[''info_source''].unique\\(\\):\n subset = df[df[''info_source''] == source]\n print\\(f'' {source}: {len\\(subset\\)} records, {subset[\"\"amount_rub\"\"].sum\\(\\):,.2f} RUB''\\)\n\")",
|
||
"Bash(__NEW_LINE_3ae1f017591cfd98__ echo \"\")",
|
||
"Bash(__NEW_LINE_60ad38285f384d62__ python3 -c \"\nimport pandas as pd\n\n# Test auto-detect\nf = ''processing/2025-12/ozon-Волнухин_А_Ю_о_движении_денежных_средств_ozonbank_document_23316120.processed.csv''\n\n# Check first line\nwith open\\(f, ''r''\\) as file:\n first_line = file.readline\\(\\)\n print\\(''First line:'', repr\\(first_line\\)\\)\n print\\(''Has semicolon:'', '';'' in first_line\\)\n print\\(''Has comma:'', '','' in first_line\\)\n\n# Read with comma\ndf = pd.read_csv\\(f, delimiter='','', encoding=''utf-8-sig''\\)\nprint\\(\\)\nprint\\(''Columns:'', list\\(df.columns\\)\\)\nprint\\(''Rows:'', len\\(df\\)\\)\nprint\\(\\)\nprint\\(''Sample:''\\)\nprint\\(df.head\\(2\\)\\)\n\")",
|
||
"Bash(__NEW_LINE_c3c45e4fba8a30f6__ python3 -c \"\n# Simulate what consolidating-step does for is_internal_transaction\ntext = ''Выдача кредита по договору №2025-06-30-KK- 04581056279272189866, Волнухин Антон Юрьевич''\nsource = ''ozon''\n\ncombined_text = text.lower\\(\\)\nprint\\(''combined_text:'', combined_text\\)\nprint\\(\\)\nprint\\(''Check: выдача кредита in combined_text?'', ''выдача кредита'' in combined_text\\)\nprint\\(''source:'', source\\)\nprint\\(''source != ozon?'', source != ''ozon''\\)\n\")",
|
||
"Bash(__NEW_LINE_051a249934ae9d8e__ python consolidating-step.py processing/2025-12)",
|
||
"Bash(__NEW_LINE_a5635cd054e2af5d__ python consolidating-step.py processing/2025-12)",
|
||
"Bash(__NEW_LINE_be0bb1dd57b96096__ python consolidating-step.py processing/2025-12)",
|
||
"Bash(do python -c \"import json; d=json.load\\(open\\(''$f''\\)\\); items=[i for i in d.get\\(''items'',[]\\) if ''Auto Reload'' not in i.get\\(''name'',''''\\)]; print\\(f\"\"{d.get\\(''order_date''\\)}: {sum\\(i[''price''] for i in items\\)} RUB\"\"\\)\")",
|
||
"Bash(do rm -v \"$f\")",
|
||
"WebFetch(domain:discuss.ai.google.dev)",
|
||
"Bash(awk:*)",
|
||
"Bash(file:*)",
|
||
"Bash(git rm:*)",
|
||
"Bash(__NEW_LINE_c0ebfadfa2d82e8e__ echo -e \"\\\\n=== TT NET ===\")",
|
||
"Bash(__NEW_LINE_d9661d77cbc2b8df__ echo -e \"\\\\n=== Осетинский интернет ===\")",
|
||
"Bash(__NEW_LINE_eb27aace61ca558d__ echo -e \"\\\\n=== Steam ===\")",
|
||
"Bash(__NEW_LINE_b138d527c99ac4d4__ echo -e \"\\\\n=== MOFT/Elago/чехол ===\")",
|
||
"Bash(curl:*)",
|
||
"WebFetch(domain:ai.google.dev)",
|
||
"WebFetch(domain:colab.research.google.com)",
|
||
"Bash(for script in consolidated-process-ozon.py consolidated-process-samokat.py consolidated-process-vkusvill.py consolidated-process-amazon.py consolidated-process-aliexpress.py consolidated-process-apple-usd.py consolidated-process-steam.py consolidated-process-grab.py)",
|
||
"Bash(for amount in 16.33 49 1565 987 400 3262 1471)",
|
||
"Bash(perl:*)",
|
||
"Bash(cut:*)",
|
||
"Bash(git restore:*)",
|
||
"Bash(chmod:*)",
|
||
"Bash(shasum:*)",
|
||
"Bash(# Check if there are any Ozon PDFs to test with ls data/2025-09/receipts/ozon/*/*.pdf)",
|
||
"Bash(__NEW_LINE_c3e7f2c4c5b0eb5a__ echo \"\")",
|
||
"Bash(shuf:*)",
|
||
"Bash(# Check how many files remain ls processing/2025-09/altcats/*.json)",
|
||
"Bash(do rm \"$f\")",
|
||
"Bash(LLM_DEBUG=1 python run-pipeline.py:*)",
|
||
"Bash(LLM_DEBUG=1 python src/stages/stage_3_categories.py:*)",
|
||
"Bash(git reset:*)",
|
||
"Bash(uv pip:*)",
|
||
"Bash(pkill:*)",
|
||
"Bash(for i in 1 2 3 4 5)",
|
||
"Bash(do sleep 5)",
|
||
"Bash(for month in 2025-06 2025-07 2025-09 2025-10 2025-11 2025-12)",
|
||
"Bash(# Check for any 2024 dates in cached Lavka JSONs grep -r \"\"2024\"\" /Users/anton/dev/moneystat/processing/2026-01/receipts/yandex/*Lavka*/*.json)",
|
||
"Bash(for month in 2025-08 2025-09 2025-10 2025-11 2025-12 2026-01)",
|
||
"Bash(git -C /Users/anton/dev/moneystat status)",
|
||
"Bash(git -C /Users/anton/dev/moneystat diff)",
|
||
"Bash(git -C /Users/anton/dev/moneystat log --oneline -5)",
|
||
"Bash(git -C /Users/anton/dev/moneystat log --oneline -3)",
|
||
"Bash(git -C /Users/anton/dev/moneystat diff src/parsers/parse_yandex_taxi.py)",
|
||
"Bash(git -C /Users/anton/dev/moneystat add src/parsers/parse_yandex_taxi.py)",
|
||
"Bash(git -C /Users/anton/dev/moneystat commit -m \"$\\(cat <<''EOF''\nCache downloaded Yandex Taxi invoices\n\nInvoice HTML files are now cached in .invoice_cache directory to avoid\nre-downloading on each pipeline run. Uses the unique invoice URL hash\nas cache key. Reduces parse time from ~7s to ~0.3s for cached invoices.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||
"Bash(git -C /Users/anton/dev/moneystat diff src/processors/consolidated_process_samokat.py)",
|
||
"Bash(git -C /Users/anton/dev/moneystat add src/processors/consolidated_process_samokat.py)",
|
||
"Bash(git -C /Users/anton/dev/moneystat commit -m \"$\\(cat <<''EOF''\nFix: Exclude Ozon transactions from Samokat matching\n\nOzon sellers named \"Самокат Плюс, ООО\" were incorrectly identified as\nSamokat grocery delivery. Now transactions already matched to Ozon\n\\(info_source contains ''ozon''\\) are excluded from Samokat matching.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||
"Bash(for parser in parse_ozon parse_yandex parse_grab parse_samokat parse_vkusvill parse_apple parse_amazon parse_aliexpress parse_steam)",
|
||
"Bash(for parser in parse_yandex_eda parse_yandex_taxi parse_lavka)",
|
||
"Bash(__NEW_LINE_7b4f4fc6eb9d9e49__ echo \"\")",
|
||
"Bash(__NEW_LINE_3b4b538c51270f95__ echo \"\")",
|
||
"Bash(__NEW_LINE_6f837450c2794e10__ echo \"\")",
|
||
"Bash(__NEW_LINE_cdd8a54243e075d5__ echo \"\")",
|
||
"Bash(git check-ignore:*)",
|
||
"Bash(node:*)",
|
||
"Bash(python /tmp/test_month_nav.py:*)",
|
||
"Bash(uv run:*)",
|
||
"Bash(git commit -m \"$\\(cat <<''EOF''\nAdd visual month navigator with mini donut chart previews\n\nReplace dropdown selector with a visual navigator featuring:\n- Left/right arrow buttons for month navigation\n- Clickable month buttons with mini donut chart previews\n- Russian month labels \\(e.g., \"Январь '25\"\\)\n- Responsive layout for mobile screens\n- Arrows disable at navigation boundaries\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||
"Skill(commit-commands:commit)",
|
||
"mcp__plugin_playwright_playwright__browser_navigate",
|
||
"mcp__plugin_playwright_playwright__browser_take_screenshot",
|
||
"mcp__plugin_playwright_playwright__browser_run_code",
|
||
"mcp__plugin_playwright_playwright__browser_snapshot",
|
||
"mcp__plugin_playwright_playwright__browser_click",
|
||
"mcp__plugin_playwright_playwright__browser_press_key",
|
||
"mcp__plugin_playwright_playwright__browser_close",
|
||
"mcp__plugin_playwright_playwright__browser_console_messages",
|
||
"mcp__plugin_playwright_playwright__browser_evaluate",
|
||
"WebFetch(domain:github.com)",
|
||
"mcp__plugin_playwright_playwright__browser_wait_for",
|
||
"mcp__plugin_playwright_playwright__browser_navigate_back",
|
||
"Bash(lsof:*)",
|
||
"mcp__plugin_playwright_playwright__browser_resize",
|
||
"mcp__plugin_playwright_playwright__browser_hover",
|
||
"Bash(git checkout:*)",
|
||
"mcp__plugin_playwright_playwright__browser_tabs",
|
||
"Bash(DATA_DIR=. node -e:*)",
|
||
"Bash(git merge:*)",
|
||
"Bash(git status:*)",
|
||
"Bash(xcrun simctl:*)",
|
||
"Bash(open:*)",
|
||
"Bash(osascript:*)",
|
||
"mcp__home-assistant__ha_get_overview",
|
||
"mcp__home-assistant__ha_search_entities",
|
||
"mcp__home-assistant__ha_config_list_areas",
|
||
"mcp__home-assistant__ha_config_list_floors",
|
||
"mcp__home-assistant__ha_config_list_groups",
|
||
"mcp__home-assistant__ha_get_integration",
|
||
"mcp__home-assistant__ha_config_get_automation",
|
||
"mcp__home-assistant__ha_config_get_script",
|
||
"Bash(ssh:*)",
|
||
"Bash(scp:*)",
|
||
"mcp__home-assistant__ha_config_get_dashboard",
|
||
"mcp__home-assistant__ha_get_state",
|
||
"mcp__home-assistant__ha_get_entity",
|
||
"mcp__home-assistant__ha_config_list_helpers",
|
||
"WebFetch(domain:thesmarthomejourney.com)",
|
||
"WebFetch(domain:community.home-assistant.io)",
|
||
"WebFetch(domain:magicareas.io)",
|
||
"WebFetch(domain:danielbkr.net)",
|
||
"WebFetch(domain:newerest.space)",
|
||
"WebFetch(domain:www.aaron-powell.com)",
|
||
"WebFetch(domain:mikesolin.com)",
|
||
"WebFetch(domain:www.dima.pm)",
|
||
"WebFetch(domain:joshdotai.medium.com)",
|
||
"WebFetch(domain:blog.abodit.com)",
|
||
"WebFetch(domain:www.derekseaman.com)",
|
||
"WebFetch(domain:blog.shalvah.me)",
|
||
"mcp__home-assistant__ha_deep_search"
|
||
],
|
||
"defaultMode": "auto"
|
||
},
|
||
"hooks": {
|
||
"Notification": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Waiting # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"PostToolUse": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Auto # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"PostToolUseFailure": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' ToolFail # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"PreToolUse": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Working # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"SessionEnd": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Ended # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"SessionStart": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Idle # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"matcher": "*",
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "bash '/Users/anton/.claude/hooks/herdr-agent-state.sh' session",
|
||
"timeout": 10
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"Stop": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Idle # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"UserPromptSubmit": [
|
||
{
|
||
"hooks": [
|
||
{
|
||
"type": "command",
|
||
"command": "'/Users/anton/Library/Application Support/Bartender/NotchBar/AgentStatus/hooks/claude-event-hook.sh' Working # notchbar-agents-claude-hook"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"statusLine": {
|
||
"type": "command",
|
||
"command": "bash ~/.claude/statusline-command.sh"
|
||
},
|
||
"enabledPlugins": {
|
||
"clangd-lsp@claude-plugins-official": true,
|
||
"codex@openai-codex": true,
|
||
"commit-commands@claude-code-plugins": true,
|
||
"document-skills@anthropic-agent-skills": true,
|
||
"frontend-design@claude-plugins-official": true,
|
||
"github@claude-plugins-official": true,
|
||
"gopls-lsp@claude-plugins-official": false,
|
||
"playwright@claude-plugins-official": true,
|
||
"rust-analyzer-lsp@claude-plugins-official": true,
|
||
"superpowers@claude-plugins-official": true,
|
||
"superpowers@superpowers-marketplace": true
|
||
},
|
||
"extraKnownMarketplaces": {
|
||
"openai-codex": {
|
||
"source": {
|
||
"source": "github",
|
||
"repo": "openai/codex-plugin-cc"
|
||
}
|
||
}
|
||
},
|
||
"effortLevel": "xhigh",
|
||
"tui": "fullscreen",
|
||
"autoMemoryEnabled": true,
|
||
"autoDreamEnabled": true,
|
||
"skipDangerousModePermissionPrompt": true,
|
||
"skipWorkflowUsageWarning": true,
|
||
"theme": "auto",
|
||
"verbose": true,
|
||
"preferredNotifChannel": "ghostty",
|
||
"remoteControlAtStartup": false,
|
||
"agentPushNotifEnabled": true,
|
||
"skipAutoPermissionPrompt": true
|
||
}
|