Skip to content

eval CLI persists resolved secrets (default_headers) into the run's config.toml and log #2345

Description

@faresobeid

The eval CLI dumps its resolved config into the run directory's config.toml and echoes it into eval.log. The API key is dumped by reference (api_key_var = "PRIME_API_KEY") — good — but header values are dumped resolved: a client configured with default_headers = {"X-Prime-Team-ID": <team id>} gets the actual team id persisted into both files. Anyone committing run directories as evidence/provenance ships the header value.

Downstream we carry a workaround (prime-tasks-private general-agent/src/general_agent_synth/scripts/run_eval_private.py): an mmap-based in-place redactor polling config.toml + eval.log for the secret strings while the child runs, masking them as <redacted>***. It works (masked files verified in committed batch evidence) but it is ~70 lines of race-prone machinery chasing what the dump could simply not write.

Ask: redact-at-source — either dump header values by reference like api_key_var (e.g. header_vars), or mask any resolved credential-bearing fields in the config dump and log echo. We'll delete the downstream redactor once the dump is clean.

Context: found during a review of the general-agent factory move (the redactor was flagged as over-defensive until frozen evidence proved the persistence is real).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions