Skip to content

Plan

View as Markdown

The result of a dry run or guv plan. plan_hash is a SHA-256 over the canonical changes and the live state version; apply must present the same hash.

Field Type Description
plan_hash * string
dry_run * boolean
summary string
changes * array of PlanChange
cost * CostDelta
policy * PolicyDecision
warnings array of PlanWarning
layout PlanLayout Presentation-only layout; it never deploys and costs nothing.
requires_approval boolean
expires_at string (date-time) The plan hash is accepted until this time.

* always present

{
"plan_hash": "sha256:9f2c1e0b7a4d3c2b1a09f8e7d6c5b4a39281706f5e4d3c2b1a0f9e8d7c6b5a49",
"dry_run": true,
"summary": "1 to update. +£5.00/month at current usage.",
"changes": [
{
"action": "update",
"resource": {
"type": "service",
"id": "svc_01jbx2m9k7q4r8t5v6w3y0z1sv",
"name": "web"
},
"environment": "production",
"summary": "Raise web memory limit from 1 GB to 2 GB",
"diff": [
{
"path": "/resources/memory_mb",
"before": 1024,
"after": 2048
}
],
"destructive": false,
"requires_approval": true,
"reason": "production requires approval for changes made by agents"
}
],
"cost": {
"current_monthly": {
"amount": "18.20",
"currency": "GBP",
"display": "£18.20"
},
"projected_monthly": {
"amount": "23.20",
"currency": "GBP",
"display": "£23.20"
},
"delta_monthly": {
"amount": "5.00",
"currency": "GBP",
"display": "£5.00"
},
"confidence": "medium"
},
"policy": {
"decision": "approval_required",
"reasons": [
{
"code": "environment_protected",
"message": "production requires approval for changes made by agents",
"policy": "guv.environment.protection"
}
],
"approver_roles": [
"owner",
"admin"
]
},
"requires_approval": true,
"expires_at": "2026-10-23T15:00:00Z"
}