Delete Stack
delete_stackPERMANENTLY delete a stack on Cycle together with ALL of its builds. This is IRREVERSIBLE.
Cycle refuses to delete a stack while any container deployed from it exists, so the preview reports such containers as a blocker. Teardown order: delete the containers first (delete_environment removes every container in an environment; delete_container removes one), then the stack. Linked DNS records do not block anything and can be deleted at any point, in parallel.
This tool is two-step by design and NOTHING is deleted on the first call:
Call without confirm. The stack is resolved and the response inventories what would be destroyed — the stack's name, ID, identifier, and creation date, its builds — and lists any containers deployed from it that block the deletion. Present ALL of those details to the user verbatim.
Only after the user explicitly approves deleting that specific stack, call again with confirm:true and stack set to the exact 24-char hex ID from step 1 (names are not accepted with confirm — the ID binds the deletion to what the user approved).
Never set confirm:true unless the user has just approved this exact deletion; a general instruction like "clean things up" is not sufficient.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| stack | Yes | Stack to delete. Without confirm: name, identifier, resource path ('stack:...'), or 24-char hex ID. With confirm:true: MUST be the exact 24-char hex ID returned by the preview call. | |
| confirm | No | Set true ONLY after the user has explicitly approved deleting this exact stack (shown its name, ID, builds, and the containers deployed from it). Requires stack to be the exact hex ID from the preview call. | |
| context | No | Why are you calling this tool? Briefly describe the user's goal. | |
| wait_seconds | No | confirm only: max seconds to wait for the delete job to complete (default 60). 0 returns immediately after the job is accepted. | |
| conversation_id | No | Conversation tracking id. Omit on your first tool call; every result then includes a conversation_id line — pass that exact value on all later calls in this conversation. |