fix(harbor): container config seeding wrote to a directory the CLI never reads (PR 14) - #893
Merged
Merged
Conversation
…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>
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All
--akseeded config (advisor, vision, env-block keys, fusion, subagent-tier effort) was silently inert in containers: the seed went to~/.clawcodex/config.jsonwhileCLAWCODEX_CONFIG_DIRpointed 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 insystem/init. Seed now writes to the literal container config dir; no oauth clobber; copy-back privacy unchanged. Main-loop--effortrides a CLI flag and was unaffected, so completed benchmark comparisons stand.🤖 Generated with Claude Code