Promote configuration
Move guardrail policies, actions, domains, agents and workflows from one project to another, with a dry run, an audit trail and an optional evaluation gate.
Promote moves configuration between projects, for example development to UAT to production, so what you tested is what goes live. Open Promote in the dashboard (admins). It works in two steps: export a bundle file from the source project, then switch to the destination project and import it.
What a bundle holds
A bundle is one JSON file with:
- Guardrail policies, actions, domains with all their intents, agents and workflows (with their steps and connections).
- Evaluation evidence: the latest completed run of every evaluation suite that tests an intent in the bundle, with the gate decision it reached.
References between them use names and keys, never database ids, so a bundle means the same thing in any project: an action is its name, an intent is domain/intent, an agent and a workflow are their keys. Choosing a workflow also brings along the actions, intents, agents and policies it uses, and the export lists what it added.
What a bundle never holds
- Secrets: action signing secrets, credential-like headers (anything named like
Authorization,Api-Key,Token,Secret,Cookie), domain tool credentials and webhook secrets. The importer supplies them. - People: approver and notification user ids. An approval step keeps its role.
- Knowledge documents and collections, run history, saved workflow values, API keys, model keys, integrations and billing.
- Prompt Studio links: the prompt text travels, but the pinned link to a library version does not.
Importing safely
- Choose the bundle file. The page shows where it came from and what it holds.
- Set what differs in this project (optional): each action keeps the address from the source unless you change it, and an action that needs a secret gets a field for it. Secrets you type are sent to the check and the import, never stored in the bundle.
- Check import. This is a dry run: it writes nothing. It lists every item as create, update or unchanged, what changes in each update, and warnings: an action pointing at a test address (webhook.site, localhost, ngrok and similar), a reference to something that doesn't exist here, an action that needs a secret you haven't supplied, a Prompt Studio link that would be removed.
- Apply import. The plan carries a hash; if the project or your settings changed since the check, the import refuses (check again) so what you reviewed is exactly what is applied.
Matching is by name or key. An import adds and updates; it never deletes, and whatever the bundle doesn't mention is left alone. Safety rules:
- Actions that need a secret you didn't supply are created inactive; an update never turns on an action that would be missing a secret.
- New workflows arrive as drafts; new agents arrive as drafts. An update to a live workflow is saved as unpublished changes, to publish in the editor like any edit. An existing agent keeps its status.
- Guardrail policies, actions, domains, intents and agents are changed as soon as you apply. They are applied together, so a failure there changes none of them. Each workflow is applied on its own: one that fails (for example a step that points at an action that isn't in this project) is reported without undoing the rest.
- Every export and import is recorded in the audit log, with the bundle's checksum, where it came from and what was created, updated or failed.
Requiring evaluation evidence (production projects)
An owner can turn on Require passing evaluation evidence under Imports into this project. A project with it on only accepts a bundle when:
- the file is exactly as it was exported (its signature, made with a key only the platform has, still matches), so the evidence inside can't have been edited by hand;
- every intent in the bundle has at least one evaluation suite, and the latest run of every suite passed its gate;
- each intent was not edited after that run started, and the run is no more than 30 days old.
Run your suites in the source project, then export. A bundle with no intents has nothing to evaluate and isn't held up by the gate. Any project that doesn't turn this on still shows a warning when a file was modified after export.
API
The same operations are available to the dashboard session, under /dashboard/promotion: GET /resources, POST /export, POST /import/plan, POST /import (with the plan_hash from the plan), and GET / PATCH /settings (the evidence requirement; owner only).