Skip to content

Secrets

A secret is a named container of keyed values — an API key, a token, a password. Store it once and reference it from a task instead of typing the value into a field.

Reference a key anywhere a reference works:

${secrets.<name>.<key>}

For example ${secrets.billing.api_key}. The reference is exactly three segments, and a fallback default is not allowed — an unset credential fails the run instead of quietly becoming a literal value. Embedded references work too, so a header value can be Bearer ${secrets.billing.api_key}.

secrets is a reserved name and cannot be used for a workflow variable.

  • User secrets are available to every workflow you own. This is the default for a credential several workflows share.
  • Workflow secrets belong to a single workflow. Use one for a workflow-specific override of a user secret.

A workflow-scoped secret wins when both exist with the same name, and shadowing is by whole name: if the workflow-scoped secret lacks a key, that is an error rather than a fall through to the user-scoped secret.

A workflow-scoped secret belongs to the person who created it. When a shared workflow runs, each collaborator resolves references against their own secrets, never the owner’s — so a shared workflow’s credentials are supplied per run, not provisioned once by whoever shared it.

Create a secret, add or replace individual keys, duplicate it under a new name — including promoting a user secret to a workflow-scoped one — and delete it. Deleting warns you first about the workflows that still reference the secret.

Values are write-only: you can add or replace them, but they are never shown back to you and are not returned by the interface. Only the secret’s name, its key names, and its timestamps are listed.

  • A secret’s values are stored encrypted and are never written into the workflow definition, so they do not persist in a saved workflow or its draft. Saved workflows are checked for reference syntax only.
  • Values are resolved when a task runs, and are replaced with [REDACTED] in logs, run history, results, errors and the feedback shown when an AI step is retried.
  • A suspended run’s state is encrypted too, so resuming it does not need the values in the clear.

Secrets protect against accidental exposure. They are not a sandbox around a task you configure:

  • The task, and the service it calls, still receives the real value it needs.
  • A value you transform before it lands in a result — encoding it, for example — is no longer recognised, and is not redacted.
  • Redaction matches exact values, so it can occasionally over-redact unrelated text that happens to equal a secret, and it does not redact a value that merely refers to a secret without containing it.
  • A shared workflow shows a reference to every viewer without revealing whether the owner has a matching secret.

An account can hold 100 secrets, a workflow 5, and one secret 32 keys — whichever limit you reach first. Delete a secret you no longer use to make room.

Secret names are up to 64 characters of lowercase letters, digits, _ or -. Key names are up to 64 characters of letters in either case, digits, _ or -.