Skip to main content
Store credentials in Evolve, then attach them to jobs by name. Secret values are write-only; reads return metadata.

Store a value

Set GITHUB_TOKEN in your shell to the credential you want to store, then run:
Piping keeps the value out of this command’s text. This example stores the staging variant. Omit --label to use default. Eval jobs support direct delivery: the value enters the agent sandbox. Brokered secrets are supported by other Evolve surfaces but are rejected for managed evals.

Attach it to a job

If several labels exist and none is default, select one explicitly. Every arm receives the attachment. Reserved routing names and the EVOLVE_ prefix cannot be overwritten.

Request it from a task

task.toml
The template matches the attached environment name. A missing required attachment rejects the job. For a non-secret fallback, use "${NAME:-fallback}". Task literals belong in [environment.env]. Managed eval jobs do not accept arbitrary agent_env values through --ae.

List, replace, or remove

A different value under an existing name and label is rejected with secret_exists. Use a new label, or delete the old secret before storing its replacement. Removing or disabling a secret needed by an unfinished job can cause its later trials to fail.
The SDK accepts both references and inline values in a job’s secrets list:
An inline value is saved before the job stores its reference. Repeating the same value and delivery reuses the existing secret; a conflicting value is rejected. The CLI equivalent is --secret-inline NAME[@LABEL]:DELIVERY=VALUE.

Secret commands

Storage, labels, and delivery options.

Secret SDK

Manage secrets from Python or TypeScript.
Last modified on November 9, 2026