Skip to content

fix(harbor): container config seeding wrote to a directory the CLI never reads (PR 14) - #893

Merged
agentforce314 merged 1 commit into
mainfrom
fix/seed-config-dir
Aug 16, 2026
Merged

fix(harbor): container config seeding wrote to a directory the CLI never reads (PR 14)#893
agentforce314 merged 1 commit into
mainfrom
fix/seed-config-dir

Conversation

@agentforce314

Copy link
Copy Markdown
Owner

All --ak seeded config (advisor, vision, env-block keys, fusion, subagent-tier effort) was silently inert in containers: the seed went to ~/.clawcodex/config.json while CLAWCODEX_CONFIG_DIR pointed the CLI at /installed-agent/clawcodex-config — the adapter comment predates config.py's config-root unification. Found when a vision-seeded nano run advertised six tools in system/init. Seed now writes to the literal container config dir; no oauth clobber; copy-back privacy unchanged. Main-loop --effort rides a CLI flag and was unaffected, so completed benchmark comparisons stand.

🤖 Generated with Claude Code

…clawcodex

Every seeded setting — effort (subagent tier), advisor, vision, the
env-block API keys, fusion records — was silently inert in task
containers: the adapter writes the seed to ~/.clawcodex/config.json
under a stale claim that the global-config path 'deliberately does not
follow CLAWCODEX_CONFIG_DIR', but src/config.py has since unified the
config root on get_user_config_dir(), which honors the env var the
adapter itself sets to /installed-agent/clawcodex-config. The CLI read
an empty global config while the seed sat unread in the home dir.

Found by iteration: a --ak vision=openai:gpt-5.6-luna nano validation
run's system/init advertised six tools — vision_analyze never
registered because vision_is_configured() read the unseeded dir.
(--effort was unaffected on the main loop: it also rides a CLI flag,
so the completed TB comparisons stand.)

The seed now writes to the literal _CONTAINER_CONFIG_DIR (this exec's
env carries only the payload var, so $CLAWCODEX_CONFIG_DIR would
expand empty). _inject_subscription_credentials writes only
anthropic-oauth.json there — no clobber; the copy-back allowlist
already excludes the config-dir root, so key material still never
transits /logs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@agentforce314
agentforce314 merged commit 3565b11 into main Aug 16, 2026
fxinfo24 pushed a commit to fxinfo24/clawcodex that referenced this pull request Aug 16, 2026
Completes capability parity with the pi TB run, which made 6 websearch
calls (mteb-leaderboard, video-processing, cobol-modernization) via its
TB extension on tasks nano lost. Nano registers clawcodex's WebSearch
(with a pi-length doc, ~150 est. tokens) IFF global config
nano.websearch is True — seeded by the adapter's --ak websearch=1, or
NANO_WEBSEARCH=1 through the runner. Key-presence alone deliberately
does NOT register it: TAVILY_API_KEY is forwarded into benchmark
containers by default, and a key that happens to exist must not grow
nano's surface — the same explicitness bar as the vision config block.
The key itself rides the (post-agentforce314#893, actually-working) env-block seed;
a missing key surfaces at call time with the tool's clear
'not configured' error.

Tests: opted-in registration with the doc override; absent without the
explicit config even though is_enabled defaults True. 65 pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant