Skip to main content

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.