Skip to content

Transports: approved changes between environments

Code reaches production through Git and CI. AI artifacts usually do not: a prompt, a model choice or a guardrail setting is often changed directly in production, with no approval, history or way back.

Govern → Transports (/compliance/transports) closes that gap. It works like a change transport in SAP:

  1. You bundle changes made in one environment, such as staging, into a transport.
  2. A second person approves or rejects it.
  3. Somebody with the permission releases it into the target environment, such as production.
  4. If it goes wrong, you roll it back.

Every item keeps the target’s state before the change and the state the release puts in place. The diff, the release and the rollback all work from exactly what was approved. Each step is recorded in the audit log, and each transport counts as evidence for ISO/IEC 42001 control A.6.2.5 (deployment planning and change control).

ArtifactWhat is transportedHow a release applies it
Prompt (Prompt Hub)The version of a prompt the source environment servesMakes sure the version exists in the target’s Prompt Hub, copying it if the target uses a separate database, then pins the target to it
Approved-model listThe environment’s list of approved providers and modelsSaves the list for the target environment, as the governance page does
Guardrail and enforcement policyThe environment’s overrides of the organisation’s enforcement policySaves the overrides for the target, recorded as a policy version with the transport’s reference as its comment

An application that asks Prompt Hub for a prompt without naming a version normally gets the latest published version. Once a transport is released into an environment, that environment is pinned: applications using that environment’s API key get the transported version until another transport, or a rollback, moves the pin. Applications that name a version explicitly still get that version.

An environment that has never received a transport behaves exactly as before.

StatusMeaningNext steps
DraftPut together, not yet submittedSubmit (requester)
Awaiting approvalSubmittedApprove or reject (a manager who is not the requester); withdraw to draft (requester)
ApprovedApproved by a second personRelease (a manager)
RejectedRejected with a reasonNone. A new attempt is a new transport
ReleasedApplied to the targetRoll back with a reason (a manager)
Rolled backThe target’s earlier state was restoredNone
PermissionAllowsHeld by
transports.read (View transports)See the project’s transports, their diffs, impact and historyAdministrators, compliance officers, analysts, members, viewers, and Auditors for their own environment
transports.request (Request transports)Put a transport together, submit it and withdraw your ownAdministrators and analysts
transports.manage (Approve and release transports)Approve, reject, release and roll backAdministrators and compliance officers

Nobody can approve or reject their own transport, whatever their role. The server refuses it, and the refusal is audited. Releasing and rolling back apply what a second person has already approved, so the approver, or a requester who holds the manage permission, may run them. The release records who ran it.

Auditors read the list and each transport, including its diff, timeline and release log. They do not see the impact panel, because it reads telemetry and costs.

Open Govern → Transports

Select New transport. If the project has only one environment you can use, the page explains that a second environment is needed. Add one under Settings → Database configuration (one configuration per environment).

Choose the source and target

Shield360 lists the changes not yet transported: each prompt the source serves at a different version, the approved-model list and the policy overrides wherever they differ.

Pick the changes, give it a title, and submit

The server reads both environments again when you save. The snapshots are never taken from your browser. An item that would change nothing is refused.

The transport’s page shows, for each item:

  • Diff: the prompt text line by line, the providers and models added to or removed from the list, or each policy setting before and after. Secret-looking policy values are masked.
  • Impact in the target environment over the last 7 days:
    • which services call a model whose approval changes, and which API keys fetched the prompt through the SDK;
    • for an approved-model change, the estimated cost impact: the per-call price difference between the model leaving the list and the one joining it, multiplied by the last 7 days’ calls and scaled to a month;
    • the latest agent test run against the prompt version;
    • the number of enrolled computers a policy change reaches.
  • Timeline of every step, and the release log of what each release or rollback did to each item.

A release first reads the target’s current state for every item:

  • An item already in the approved state is skipped. Running a release again is safe, and a release that stopped part way is finished by running it again.
  • An item still in the “before” state is applied.
  • If anything else is found, someone changed the target by other means since the transport was made. Nothing is written, and you make a new transport from the current state.

Rollback works the same way in reverse. A change freeze in force stops releases and rollbacks too.

Each environment’s controls include the check Changes to AI artifacts are released through approved transports (transports.controlled), mapped to ISO/IEC 42001 A.6.2.5. It counts the transports into or out of the environment. It is a gap when a release had no decision by somebody other than its requester, or when a transport has waited more than 14 days for approval. It is not applicable until the environment has a transport.

Evidence packages include transports.json and transports.csv, and a Transports between environments section in the report. These list each transport with a step in the period: its route, status, item types, requester and approver (user ids), whether a second person approved it, and when each step happened. Titles, descriptions, reasons and prompt text are not included.

A transport keeps its title, description, reasons and the before and after snapshots of each item, including prompt template text. Prompt templates are your organisation’s configuration, not content from monitored people. The audit log records ids, statuses, artifact types and outcome codes only, never titles, reasons or snapshot content.

All routes act on the project of the environment you have selected.

Method and pathPermissionDoes
GET /api/governance/transports?status=transports.readThe project’s transports, counts and your environments
POST /api/governance/transportstransports.requestCreate: { title, description?, sourceDatabaseConfigId, targetDatabaseConfigId, items: [{ artifactType, artifactKey }], submit? }
GET /api/governance/transports/changes?source=&target=transports.readChanges not yet transported between two environments
GET /api/governance/transports/<id>transports.readOne transport with items, steps and release log
PATCH /api/governance/transports/<id>transports.request{ action: "submit" } or { action: "withdraw" }
POST /api/governance/transports/<id>/reviewtransports.manage{ action: "approve", reason? }, { action: "reject", reason }, { action: "release" } or { action: "rollback", reason }
GET /api/governance/transports/<id>/impacttransports.readWhere used, cost impact and evaluation, read live

artifactType is prompt (with the prompt’s name as artifactKey), approved_models or enforcement_policy.