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.
Do not use SECRETS expressions — or any expression that resolves to a value you would not send to your LLM provider — in ai.action or ai.agent inputs. Use ai.preset_agent for secure secrets injection.
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