--value <value> is the other channel. --delivery is required: direct places the value in the sandbox environment, brokered keeps it out of every sandbox and needs the --allowed-host, --allowed-path-prefix and --allowed-method scoping. Eval trials take direct secrets only; a brokered one is refused with secret_brokered_unsupported. --label <label> keeps several values of one name side by side; the default label is default.
Restating the same value re-shapes its delivery or scoping. A different value under an existing name and label is refused with secret_exists: delete it first, or use another label.
Attach a secret to a job
--secret NAME[@LABEL][=ENVNAME] attaches a stored secret to every agent run. @LABEL picks a labeled row; omitted, the default row or the only row, and several labels with no default is refused with secret_ambiguous. =ENVNAME renames the variable inside the sandbox; a name the platform owns, such as the EVOLVE_ prefix or REWARDKIT_JUDGE, is refused. The job stores a reference, and the value never rides the command line.
In the SDK the same attachment is secrets: [{ name, label?, as? }] on jobs().start(). --secret-inline NAME[@LABEL]:DELIVERY=VALUE, or { name, value, delivery, label?, as? } in that list, saves the value and attaches it in one step; re-running with the same value converges, a different value is refused with secret_exists.
A task’s [environment.env] can ask for a secret with a ${VAR} template, satisfied by a secret attached under that env name; see tasks. Plain, non-secret environment does not go on a job: the server refuses agent_env (--ae). Declare it in the task’s [environment.env] table instead.
secrets reference
Every flag of
evolve secrets.
