app delete
Permanently delete an application.
Removes an application and everything the platform holds for it. There is no undelete and no retention window.
Because of that it never prompts. It stops, hands back the exact command that would proceed, and leaves the decision to whoever is allowed to make it. That is also why a single flag is not enough: the application's own name has to be typed again.
Usage
outplane app delete <APP> [flags]Arguments
| Argument | Type | Description |
|---|---|---|
APP | string | App name or id. Required. Must match ^[a-zA-Z0-9]{5,45}$. |
Flags
| Flag | Type | Description |
|---|---|---|
-y, --yes | bool | Acknowledge the deletion. Not sufficient on its own. |
--confirm-name | string | The app's name, typed again. Required, because a single --force is too easy for an agent to emit by accident. |
The global flags apply as well.
Output
| Field | Type | Description |
|---|---|---|
deleted | bool | False for a dry run. |
app | string | The application's immutable name. |
appId | string |
Examples
Confirm which application the name resolves to, before confirming anything
outplane app delete checkout --dry-run --json{
"app": "checkout",
"deleted": false
}Request deletion. Returns exit 4 with a command to replay
outplane app delete checkoutThe confirmed form, which a human approves
outplane app delete checkout --yes --confirm-name checkoutWhat to Know
- This command never prompts. Without confirmation it exits 4 and returns the exact command to replay in the error's confirm_command field.
- Exit 4 is not a failure. It means the confirmation belongs to somebody else.
- Under a detected agent harness it exits 4 even when --yes and --confirm-name are supplied. A flag is not a safety boundary, because an agent that read this note can emit any flag in it; the harness's own approval step is the gate.
- Some things stop a deletion instead of being removed with it: a custom domain and an attached volume are two. The server owns that list and its refusal names the rule, so --dry-run reports what would be deleted rather than predicting whether it can be.
- --confirm-name is matched against the immutable name, not the display name.
- Deletion is irreversible. There is no undelete and no retention window.
Errors
Beyond 0 for success, this command exits with:
| Exit | Kind | Meaning |
|---|---|---|
2 | usage | Invalid arguments, unknown flag, or client-side validation failure. |
3 | auth | Not authenticated, token revoked or expired, or forbidden for this team. |
4 | confirmation_required | A destructive operation stopped. Replay the command in confirm_command. |
5 | not_found | The named resource does not exist, or is not visible to this credential. |
8 | upstream | The Out Plane API returned a server error. |
The code on the error object is one of confirmation.required, app.confirm_name_mismatch, app.delete_blocked, app.not_found, usage.empty_argument. Branch on that, or on the exit status. The message is prose and changes.