Preview Infrastructure Plan
tfplanPREVIEW: Run terraform plan to preview infrastructure changes Runs a terraform plan for an InsideOut session without applying any changes. This lets the user review what will be created/changed/destroyed before committing. Returns job_id, plan_id, and project_id. Use tflogs to stream the plan output. After the plan completes, use tfdeploy with plan_id to apply the exact plan. SINGLE-FLIGHT: only one TF job per session at a time. If another job is already in flight, tfplan returns tf_job_conflict with the live job_id — attach with tfstatus/tflogs, or pass force_new=true to override. REQUIRES: session_id from convoopen response (format: sess_v2_...). OPTIONAL: sandbox (boolean, default false) — plans real generated Terraform. Set to true for cheap sandbox template (testing only). OPTIONAL: force_new (boolean, default false) - bypass the single-flight guard. Use only when the existing run is provably wedged. CREDENTIAL HANDLING: Same as tfdeploy - credentials must be configured first.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"session_id": "<session_id>"
},
"name": "tfplan"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sandbox | No | When true, plan against the sandbox stack; when false (default), plan the real generated Terraform. | |
| force_new | No | When true, bypass the single-flight guard and force a new plan even if one is already running. | |
| session_id | Yes | Session ID from convoopen — pass back EXACTLY as returned, including the ?token=... suffix (format: sess_v2_*?token=*). The suffix is part of the session credential; never strip it when summarizing. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hints | No | Guidance for the calling agent: what to do next and which tools relate to this result. | |
| job_id | No | ID of the plan job. Follow it with tfstatus. | |
| plan_id | No | Plan ID. Pass it to tfdeploy (with project_id) to apply exactly this plan. | |
| success | No | True when the plan job was started. | |
| project_id | No | Project ID that goes with plan_id on tfdeploy. |