Out Plane
app

app delete

Permanently delete an application.

destructive--dry-run

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

ArgumentTypeDescription
APPstringApp name or id. Required. Must match ^[a-zA-Z0-9]{5,45}$.

Flags

FlagTypeDescription
-y, --yesboolAcknowledge the deletion. Not sufficient on its own.
--confirm-namestringThe 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

FieldTypeDescription
deletedboolFalse for a dry run.
appstringThe application's immutable name.
appIdstring

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 checkout

The confirmed form, which a human approves

outplane app delete checkout --yes --confirm-name checkout

What 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:

ExitKindMeaning
2usageInvalid arguments, unknown flag, or client-side validation failure.
3authNot authenticated, token revoked or expired, or forbidden for this team.
4confirmation_requiredA destructive operation stopped. Replay the command in confirm_command.
5not_foundThe named resource does not exist, or is not visible to this credential.
8upstreamThe 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.

On this page