Overview
Preset agents can reference secrets and variables using Tracecat expression syntax.
Include ${{ SECRETS.<name>.<key> }} or ${{ VARS.<name>.<key> }} in a preset agent’s saved instructions so the agent passes them as tool arguments at runtime.
Security
Preset agent tool calls go through a secure server-side proxy.
The LLM only sees the raw expression placeholder (e.g. ${{ SECRETS.threatintel.API_KEY }}). The actual secret values are injected server-side at the tool execution layer after the model responds, so the LLM never has access to your credentials.
ai.action and ai.agent actions do not support secure secrets injection. Secret and variable expressions are evaluated immediately in workflow action inputs and will be exposed to the LLM.
Secrets
Use ${{ SECRETS.<secret_name>.<key> }} to reference a secret stored in your workspace credentials.
In a workflow action this looks like:
Where the security-triage preset instructions contain:
Variables
Use ${{ VARS.<variable_name>.<key> }} for non-sensitive configuration such as base URLs, project IDs, or channel names.
In a workflow action:
Where the security-triage preset instructions contain:
Secrets and variables
Use secrets for credentials and variables for everything else.
Full workflow example:
Where the security-triage preset instructions contain:
OAuth secrets
OAuth tokens follow a different naming convention. The secret name is <provider_id>_oauth and the key is the provider ID in uppercase plus _USER_TOKEN or _SERVICE_TOKEN.
In a workflow action:
Where the sentinel-analyst preset instructions contain:
See OAuth integrations for setup and the full list of built-in providers.
Related pages