Troubleshooting and error codes
Fixes for common problems, and every Deplane error code with what it means and how to fix it.
Every error from the CLI and the API has a stable code, a message that says what happened, and a fix that says what to do. API errors also carry a docs link to the matching section of this page and a request_id to quote when you email support@deplane.cloud.
Common problems
Cannot log in
- Run
deplane doctor. It checks that the API answers and that your login works. - If
DEPLANE_TOKENis set, the CLI uses it instead of your login. Unset it to usedeplane login. - The login code expires after 10 minutes. Run
deplane loginagain for a new one. - Type the code shown in your terminal on https://login.deplane.cloud/device. Approve only a request you just started yourself.
- Sign-in links work once and expire after 15 minutes. Request a new one on the sign-in page.
- After too many wrong authenticator codes, codes are locked for a while. Use your passkey instead.
- Deplane is invite-only during the beta. Your email must have an approved access request.
Build failed
The CLI exits with code 3 and shows the build log. Look at the last lines of the log for the step that failed.
- Without a Dockerfile, Deplane works out the build from your project files. If it cannot, add a Dockerfile, or check the messages in the log. See railpack_plan_failed.
- A build has 15 minutes, 3 GB of memory, and 10 GB of disk. See build_timeout, build_out_of_memory, and build_disk_full.
- Private packages need a token while building. Set it as a build secret:
deplane secrets set --build NPM_TOKEN=.... See Secrets. - If the upload is too large, add
node_modules, build output, and data files to.dockerignoreor.gitignore.
Deploy failed
The build worked but the new release did not become healthy. The CLI exits with code 4, the release is marked failed, and the previous release keeps serving. deplane status shows the reason and the fix:
| Reason | What it means | Fix |
|---|---|---|
Unschedulable | There is not enough room for this size right now. | Use a smaller size or fewer instances (deplane scale 1 --size small), or try again later. |
ImagePullFailed | Deplane could not fetch the release's image. This is a problem on our side and we have been alerted. | Run deplane deploy again in a few minutes. |
HealthCheckFailed | The app started but did not answer its health check on its port. | Make the app listen on 0.0.0.0 at the port in $PORT, and make health_check (if set) answer 200. Run deplane logs to see why it failed. |
Crashing | The app stops soon after it starts. If it ran out of memory, the message says so. | Run deplane logs to see the error, fix it, and run deplane deploy. For memory, use a larger size: deplane scale --size medium. |
Timeout | The new release did not become healthy within 5 minutes. | Run deplane logs, fix the problem, and run deplane deploy. |
App not reachable
- Run
deplane status.Stateshould beRunningwith all instances ready. - If you scaled to 0, nothing is running. Run
deplane scale 1. - Your app must listen on
0.0.0.0, not127.0.0.1orlocalhost, at the port in$PORT. - A request that gets no first byte back within 125 seconds times out. See Limits.
- If the app is suspended,
deplane statusshowssuspended. Email support@deplane.cloud.
Quota reached
Errors whose code starts with limit_ mean you reached a plan limit, and the CLI exits with code 6. Run deplane whoami --json to see your limits and deplane apps to see what uses them. Destroy or scale down apps you no longer need, or email support@deplane.cloud to raise the limit. See Limits.
Error codes
Exit codes: codes starting with limit_ exit with 6. Build failures exit with 3 and deploy failures with 4. Other API errors exit with 2 for authentication and permission problems, 5 for problems on our side, and 1 for everything else. Some codes appear only in the web pages for signing in, not in the CLI.
access_denied
The login or confirmation request was denied in the browser.
Fix: run the command again if that was a mistake.
access_request_reviewed
An admin tried to approve or deny a beta access request that was already approved or denied.
Fix: list open requests with deplane admin requests.
account_suspended
Your account or organization is suspended. Its tokens no longer work and its apps run zero instances.
Fix: email support@deplane.cloud. See Reporting abuse for what suspension means and how to appeal.
alerts_unavailable
Alerts are not available on this server.
Fix: Try again later.
already_current
You asked to roll back to the release that is already current.
Fix: pick an earlier version from deplane releases.
already_member
The address you invited is already in your team.
Fix: nothing to do.
already_suspended
An admin tried to suspend an app or organization that is already suspended.
Fix: nothing to do. To change the reason, unsuspend it with deplane admin unsuspend and suspend it again.
app_has_database
The app already uses another database as its DATABASE_URL.
Fix: detach that database first, then attach this one.
app_name_brand
App names cannot contain a well-known brand name, such as paypal or google. Common letter swaps such as paypa1 count too. This protects people from phishing.
Fix: pick a name without the brand. If you own the brand, email support@deplane.cloud.
app_name_reserved
The name is reserved by Deplane, for example api, www, or admin.
Fix: pick another name, for example api-app.
app_exists
deplane launch --name NAME named an app your organization already has, from a folder that is not that app's. Launch never deploys one folder over another app.
Fix: to deploy this folder to that app on purpose, run deplane deploy --app NAME. To create a new app, pick another name with --name.
app_name_taken
Another app already has this name. Names are unique across Deplane, and the name of a deleted app stays reserved for its team for 90 days, so nothing still pointing at the old address reaches another team's app.
Fix: pick another name with deplane launch --name NAME. Without --name, launch picks a free name for you.
app_not_found
There is no app with this name in your organization.
Fix: check the app in deplane.toml or the --app flag, or run deplane launch to create the app. deplane apps lists your apps.
app_suspended
This app is suspended, so it cannot be deployed or changed.
Fix: email support@deplane.cloud to resolve the suspension.
app_unavailable
The app was destroyed or suspended while it was building, so no release was created.
Fix: if the app still exists, run deplane deploy again.
assistant_failed
The assistant could not answer right now, usually because the AI service did not respond in time.
Fix: Ask again in a moment.
assistant_monthly_limit
Your team asked the assistant as many questions this month as your plan includes.
Fix: It resets on the 1st (UTC). To raise it, email support@deplane.cloud.
assistant_not_in_plan
The assistant is not included in your team's plan.
Fix: Email support@deplane.cloud to turn it on.
assistant_rate_limited
You asked the assistant 40 questions in the last hour, the most allowed.
Fix: Wait a few minutes and ask again.
assistant_unavailable
The assistant is not set up on this Deplane installation yet.
Fix: Use the dashboard, deplane status and deplane logs meanwhile.
authorization_pending
The login or confirmation request is waiting for approval in the browser. The CLI keeps waiting; you only see this code if you call the API yourself.
Fix: approve the request in your browser.
backup_changed
The full copy or stream a restore was about to start from was deleted by retention at the same moment, so the restore was not started.
Fix: run the restore again; it starts from the backups that are there now.
backup_not_restorable
That disk backup cannot be restored: it did not finish (failed, or still under way). Any backup marked done in the list can be restored.
Fix: pick a backup marked done from deplane disks backups APP.
backup_running
A backup of this disk is already under way.
Fix: wait for it to finish; deplane disks backups APP shows it. A restore cannot start during a backup either.
backup_too_soon
This disk was already backed up on request in the last hour. You can ask for a backup at most once an hour; the disk is also backed up every night. After a backup on request fails, you can try again 5 minutes later.
Fix: try again after the time in the message.
backups_off
Deplane's database backups are switched off right now (for example during maintenance), so a restore cannot start.
Fix: try again later, or email support@deplane.cloud if you need a copy of your data now.
bad_credentials_file
The file where the CLI stores your login, credentials.json in your config folder, is not valid JSON.
Fix: delete the file the message names and run deplane login again.
bad_response
The API sent a response the CLI cannot read, or a login was approved without a token.
Fix: update the CLI, then try again. For a login, run deplane login again.
body_too_large
The request body is larger than the API accepts: 64 KB, except source uploads.
Fix: send less than 64 KB. For uploads, use deplane deploy.
build_capacity
Deplane had no free build capacity for 5 minutes, so the build did not start. Builds normally start within seconds: one build's worth of capacity is kept free.
Fix: deploy again in a few minutes. If it keeps happening, email support@deplane.cloud.
build_disk_full
The build used more than 10 GB of disk, the limit.
Fix: keep large files out of the build with .dockerignore, and clean package caches in the same step that fills them.
build_expired
The build waited in the queue for more than an hour and was not started.
Fix: run deplane deploy again.
build_failed
A step of the build failed.
Fix: see the build log for the step that failed, fix it, and run deplane deploy again.
build_interrupted
The build was interrupted on our side and did not finish.
Fix: run deplane deploy again.
build_out_of_memory
The build ran out of memory. A build has 3 GB.
Fix: lower the build's memory use, for example with fewer parallel jobs, or for Node with NODE_OPTIONS=--max-old-space-size=2048 set as a build secret.
build_platform_error
The build could not run because of a problem on our side.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
build_start_failed
The build could not be started.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
build_timeout
The build took longer than 15 minutes, the limit. The CLI also uses this code if it stops waiting for a build.
Fix: make the build faster, for example by removing unused dependencies or build steps, then run deplane deploy again. Run deplane status to see where a build is.
builds_unavailable
Builds are not available right now.
Fix: try again in a few minutes. If it keeps happening, email support@deplane.cloud.
capacity_full
Deplane's servers are nearly full: a new app, a preview, a scale-up, a new or bigger worker or cron job, a new or restored database, a new Redis, or a template deploy would take the servers' reserved memory above 85% of what they hold. Apps that already run are not affected, and we are alerted to add capacity. The CLI exits with code 5.
Fix: try again later, or use a smaller size or fewer instances.
cancelled
You answered no to a confirmation, or stopped the command.
Fix: run the command again. Pass --yes to skip the question.
cannot_remove_self
You tried to remove yourself from the team.
Fix: ask another owner to remove you.
cannot_suspend_own_org
An admin tried to suspend their own organization. That would lock them out of deplane admin unsuspend.
Fix: ask another admin to do it.
ci_token_not_allowed
CI tokens cannot create, list, or revoke tokens, invite or remove team members, confirm actions, destroy apps, delete, restore or switch databases, or run admin commands.
Fix: do it in the dashboard, or from your own machine after deplane login (the CLI asks you to confirm in your browser). A CI token can revoke itself with POST /v1/logout.
disk_exists
The app already has a disk. An app has at most one.
Fix: use the disk it has (deplane disks list), or destroy it first with deplane disks destroy APP.
disk_needs_one_instance
An app with a disk runs one instance. It cannot be given a disk while it runs more than one instance or autoscales, and with a disk it cannot be scaled above one instance or set to autoscale. See Disks.
Fix: scale to 1 instance and turn off autoscaling first: deplane scale 1 --max 0 --app APP.
disk_not_found
The app has no disk.
Fix: add one with deplane disks create APP. deplane disks list shows your team's disks.
disk_on_preview
Pull request previews cannot have a disk. They run without the disk of their app.
Fix: add the disk to the app itself.
invalid_disk_path
The disk's path is not allowed. It must be absolute, use lowercase letters, digits and . _ / -, have no .. part, and not be / or a system folder: /proc, /sys, /dev, /etc, /bin, /sbin, /lib, /usr, /var/run, /run, or anything under them.
Fix: use a path such as /data (the default) or /srv/files.
limit_disk
Your team's disks together would use more disk space than your plan allows. Every disk is 5 GB; the Beta plan allows 10 GB.
Fix: destroy a disk you no longer need with deplane disks destroy APP, or email support@deplane.cloud to raise the limit.
mcp_database_url
AI tools connected to Deplane, such as Claude, cannot set DATABASE_URL, at run time or at build time. Nothing was changed.
Fix: have the tool attach a database (attach_database). To set DATABASE_URL by hand, or to switch apps to a restored database, do it yourself in the dashboard or with the CLI.
mcp_not_allowed
AI tools connected to Deplane, such as Claude, can call only what their tools need. Everything else is refused: deleting or detaching things, app settings, alert settings and channels, the activity log, tokens, the team, the assistant, connections and admin features.
Fix: do it yourself in the dashboard.
mcp_needs_connection
The MCP endpoint accepts an AI tool's OAuth connection or a CI token. It refuses the login token that deplane login stores on your machine.
Fix: add Deplane to your AI tool with the server URL; it opens a browser to connect. Or use a CI token.
confirmation_required
The command needs a yes or no answer, and no terminal is attached, so the CLI did not ask.
Fix: pass --yes to confirm.
csrf_failed
A form on the sign-in site expired or did not come from that site.
Fix: go back, reload the page, and try again.
database_capacity
Every database disk on the platform is in use, so Deplane did not create the database (or the restore's new database). Nothing was created and nothing is charged.
Fix: try again later. If it keeps happening, email support@deplane.cloud.
database_exists
Your team already has a database with that name.
Fix: pick another name.
database_failed
An AI tool asked to attach a database that could not be created.
Fix: open the database in the dashboard's Databases page to see why, then create it again.
database_not_ready
An AI tool asked to attach a database that is still being created. A new database is ready in about a minute.
Fix: the tool calls attach_database again in a minute.
deploy_failed
The new release did not become healthy. It was marked failed, and the previous release keeps serving. The message gives the reason: Unschedulable, ImagePullFailed, HealthCheckFailed, Crashing, or Timeout.
Fix: follow the fix in the message. The table in Deploy failed lists each reason. deplane logs shows the app's output.
deploy_in_progress
An AI tool asked to deploy an app that already has a build queued or running. AI tools deploy one version of an app at a time.
Fix: the tool calls wait_for_deploy with the build ID in the message, then deploys again.
deploy_timeout
The CLI stopped waiting because the release did not finish rolling out in time.
Fix: run deplane status to see what is happening, and deplane logs for the app's output.
detect_failed
Deplane could not tell how to build this folder.
Fix: run the command in your project's root folder. Deplane builds Node, Python, Go, Ruby, PHP, Java, and static sites without configuration, and any project with a Dockerfile. See the Quickstart.
device_code_invalid
The login code you typed is not valid or has expired.
Fix: check the code shown in your terminal, or run the command again for a new one.
device_wrong_account
The login or confirmation request was started by a different Deplane account than the one signed in to the browser.
Fix: sign in with the account that ran the command.
dockerfile_syntax_not_allowed
The Dockerfile starts with a # syntax= line, which would load a build tool from outside Deplane.
Fix: remove the # syntax= line. Deplane builds with the standard Dockerfile support, which handles current Dockerfile features.
dockerfile_too_large
The Dockerfile is larger than 1 MB.
Fix: shorten the Dockerfile.
domain_dangling
Another team had this domain connected to its app on Deplane, removed it or deleted the app, and the domain's CNAME still points at that old app's address. Deplane does not let a leftover DNS record hand the domain to someone else.
Fix: whoever controls the domain's DNS must change the CNAME to your app's address (shown in the Domains tab), then add the domain again. If you do not control the domain's DNS, you cannot connect it.
domain_taken
The custom domain is already connected to an app on Deplane, possibly in another organization.
Fix: if the domain is yours, remove it from the other app first. If you do not recognize the other app, email support@deplane.cloud.
expired_token
The login or confirmation code expired before it was approved, or was already used.
Fix: run the command again.
github_already_linked
That GitHub account is linked to another Deplane account.
Fix: sign in to that account instead, or use a different GitHub account.
github_app_exists
Deplane's GitHub App was already created.
Fix: Manage it on GitHub from the admin page /admin/github.
github_authorization_failed
GitHub did not confirm that you approved Deplane seeing your repositories, or the approval expired.
Fix: Press Connect GitHub again and approve on GitHub.
github_authorization_needed
Deplane does not know which of your GitHub repositories you can use yet. Approvals last an hour.
Fix: Press Connect GitHub in the dashboard and approve on GitHub. See GitHub.
github_branch_missing
The branch the app deploys from is not in the repository.
Fix: Push the branch, or pick another one in the app's Settings.
github_deploy_failed
Deplane could not deploy the connected branch, for example because the repository is empty or the branch is gone. The message says which.
Fix: Fix the problem on GitHub or in the app's Settings, then run deplane github deploy again.
github_deploy_slow
GitHub's commit did not reach Deplane within 2 minutes.
Fix: Run deplane status in a minute; the deploy may still start.
github_link_exists
Your account is already linked to a GitHub account.
Fix: email support@deplane.cloud to change the linked GitHub account.
github_login_failed
GitHub sign-in did not complete.
Fix: start again from the sign-in page.
github_not_connected
The app is not connected to a GitHub repository.
Fix: Connect one in the app's Settings.
github_not_linked
No Deplane account is linked to this GitHub account.
Fix: sign in with your sign-in link, then link GitHub from your account page.
github_preview_app
Pull request previews follow the app they belong to and cannot be connected to a repository themselves.
Fix: Connect the app the preview belongs to.
github_repo_empty
The connected repository has no commits yet, so there is nothing to deploy.
Fix: Push a first commit to the branch. Deplane deploys it automatically.
github_repo_not_allowed
You have not given Deplane access to that repository, or your approval is older than an hour.
Fix: Press Connect GitHub. On GitHub, add the repository to the Deplane app's repository access, then pick it again.
github_repo_not_visible
An AI tool asked to deploy a GitHub repository that the Deplane GitHub App cannot read for you.
Fix: give the Deplane GitHub App access to the repository from the app's Settings tab in the dashboard, then ask again.
github_root_missing
The root folder set for the app is not in the repository at the commit being deployed.
Fix: Fix the root folder in the app's Settings, or leave it empty for the repository's root.
github_setup_failed
GitHub did not confirm the new GitHub App. Its confirmation code works once, for an hour.
Fix: Start again from /admin/github.
github_unavailable
Deploying from GitHub is not set up on this Deplane installation yet.
Fix: Deploy with deplane deploy or by uploading a folder in the dashboard.
has_account
The address already has a Deplane account with its own team. Being in more than one team is coming soon.
Fix: invite a different address for now, or sign in with the existing account.
http_status
The CLI got an HTTP error with no Deplane error in it, for example from a proxy. The code is http_ followed by the status, such as http_502 or http_503.
Fix: try again later. If you set DEPLANE_API_URL, check that it points to the Deplane API.
image_invalid
The image the build produced could not be read.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
image_not_found
The build finished, but its image could not be found.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
impersonation_read_only
A Deplane administrator viewing a team (for support) can only look: every change is refused while viewing.
Fix: Stop viewing as the team from the red banner.
instances_on_cron
A cron job was given an instance count. Each run of a cron job is one instance.
Fix: leave instances out for a cron job; set its schedule instead.
internal
Something went wrong on our side, or the CLI hit an unexpected problem.
Fix: try again, with --debug for details. If it keeps happening, email support@deplane.cloud with the request ID.
invalid_alert_channel
The alert channel's kind or name is not valid.
Fix: Use slack, discord or webhook (email is not delivered yet), and a name of at most 60 characters.
invalid_alert_settings
An alert threshold is out of range: the error rate is between 0.1% and 100%, the response time between 100 and 60000 ms.
Fix: Pick a value in range, like 5% or 2000 ms.
invalid_alert_target
The webhook address is not valid for its kind: Slack needs https://hooks.slack.com/services/…, Discord https://discord.com/api/webhooks/…, and a webhook a public https:// address.
Fix: Copy the URL again from Slack, Discord, or your endpoint.
invalid_api_url
DEPLANE_API_URL is not a valid URL.
Fix: set it to a URL such as https://api.deplane.cloud, or unset it.
invalid_app_name
App names are 3 to 40 characters: lowercase letters, digits, and single hyphens, starting with a letter and not ending with a hyphen.
Fix: pick a name like my-app.
invalid_arguments
An AI tool called a Deplane tool with arguments it cannot use, such as a missing app name or a malformed build ID.
Fix: the tool checks the tool's input schema and calls it again; list apps with list_apps and builds with builds.
invalid_auto_rollback
deplane config --auto-rollback got a value other than on or off.
Fix: use deplane config --auto-rollback on or deplane config --auto-rollback off.
invalid_autoscale
The autoscaling ceiling is not valid: it must be more than the number of instances and at most 1000, and a stopped app cannot autoscale.
Fix: set max_instances above instances (for example deplane scale 1 --max 5), or 0 to turn autoscaling off.
invalid_branch
The branch name is not valid.
Fix: Use the branch's name as GitHub shows it, for example main.
invalid_category
An abuse report's category is not one of the allowed ones.
Fix: use phishing, malware, spam, csam, copyright, illegal, or other.
invalid_client
Deplane does not know the AI tool that sent this request. Its registration may have been removed.
Fix: connect Deplane again from the AI tool, which registers it afresh.
invalid_client_metadata
The AI tool sent registration details Deplane cannot accept: unreadable JSON, text with NUL characters, or a client that needs a secret.
Fix: Deplane supports public clients only. Register with token_endpoint_auth_method set to none and send a single JSON object.
invalid_code
The authenticator code is not correct.
Fix: enter the current 6-digit code from your authenticator app.
invalid_command
A worker's or cron job's command is empty, too long, or spans lines.
Fix: give one line of at most 1000 characters, for example node worker.js. It runs through the image's shell (/bin/sh -c).
invalid_company
The company name in an access request is longer than 200 characters.
Fix: shorten the company name.
invalid_config
deplane.toml is not valid: it is not TOML, has an unknown setting, or has a bad value.
Fix: fix the line the message names. deplane.toml knows app and, under [service], port (1 to 65535), instances, size (small, medium, or large), and health_check (a path starting with /). Or delete the file and run deplane launch.
invalid_conversation
The conversation sent to the assistant is not valid: it must end with your question, and each message needs a role and text.
Fix: Ask again; the dashboard and deplane ask send it correctly.
invalid_database_name
Database names are 3 to 30 characters: lowercase letters, digits and single hyphens, starting with a letter.
Fix: pick a name such as main, orders, or analytics-db.
invalid_domain
The hostname is not a public domain name Deplane can route.
Fix: enter a hostname such as www.example.com or example.com, without https:// or a path.
invalid_drill
A drill result was malformed: its start must come before its end, neither in the future, with a summary of at most 8000 characters.
Fix: send the result infra/dr/drill.sh sends.
invalid_email
The email address is not valid.
Fix: enter an address like you@company.com.
invalid_entitlements
An admin sent plan limits with an unknown key or a bad value.
Fix: use the keys and value types shown by GET /v1/admin/plans.
invalid_files
An AI tool sent files to deploy that Deplane cannot pack: no files, more than 5,000, more than 25 MB in all, a path that is not a clean relative path (absolute, or with .., // or a backslash) or that appears twice, or content marked base64 that is not valid base64.
Fix: send each file as {path, content, encoding}: a relative path, utf8 or base64 content.
invalid_findings
The watcher's findings were malformed: at most 50 checks, each with a lowercase name and a detail of at most 500 characters.
Fix: send {"findings":[{"check":"canary","detail":"…"}]}.
invalid_flag
A flag got a value it does not take, or a value out of range. For example, --json=true, or --expires-in-days 500.
Fix: use the flag as the message says. deplane help lists the flags.
invalid_grant
The sign-in code or refresh token is wrong, expired, or was already used. If a code or refresh token is used twice, Deplane ends that connection as a precaution.
Fix: connect Deplane again from the AI tool.
invalid_health_check
The health check is not a valid path.
Fix: use a path that starts with / and has no spaces, for example /healthz, or leave it out for a TCP check.
invalid_image_digest
A release was given an image reference that is not a sha256 digest.
Fix: pass a digest like sha256: followed by 64 hex characters. Releases made by deplane deploy always have one.
invalid_instances
The number of instances is not a whole number of 0 or more.
Fix: run deplane scale 2, or deplane scale 0 to stop the app.
invalid_json
The request body is not valid JSON for this endpoint, has unknown fields, or contains more than one object.
Fix: check the request format at https://api.deplane.cloud/v1/openapi.yaml and send exactly one JSON object.
invalid_kind
An admin instance list was filtered by a kind of microVM that does not exist.
Fix: use kind=app, kind=worker, kind=database, or kind=build.
invalid_limit
A list request asked for too few or too many entries.
Fix: use a limit from 1 to 200, for example ?limit=50.
invalid_mode
A passkey or GitHub sign-in was started with an unknown mode.
Fix: reload the page, or start again from the sign-in page.
invalid_name
The name in an access request is empty or longer than 200 characters.
Fix: enter your name or your company's name.
invalid_payload
The webhook's body is not valid JSON.
Fix: Only GitHub sends webhooks to Deplane; nothing to do.
invalid_period
A metrics request asked for a period Deplane does not chart.
Fix: use period=1h, period=24h, period=7d, or period=30d.
invalid_plan
The plan does not exist or is not offered any more.
Fix: Pick one of the plans listed in the admin console's Settings.
invalid_port
The port is not between 1 and 65535.
Fix: use the port your app listens on. Deplane also sets it as PORT.
invalid_process_kind
A process must be a worker or a cron job.
Fix: use kind worker (always running) or cron (on a schedule).
invalid_process_name
Process names are 2 to 22 characters: lowercase letters, digits and hyphens, starting with a letter. web is the app itself.
Fix: pick a name such as worker, emails, or nightly-report.
invalid_range
A usage request asked for a range Deplane does not report.
Fix: use range=24h, range=7d, range=30d, range=month, or range=prev_month. A server's history in the admin console takes range=24h or range=7d.
invalid_recovery_code
The recovery code is not correct or was already used.
Fix: check the code and try again. Each recovery code works once.
invalid_redirect_uri
The return address is not allowed. It must be https, or http on a loopback address (localhost or 127.0.0.1), have no fragment, and match one the AI tool registered.
Fix: update the AI tool and connect again. If you build the tool, register only addresses that meet these rules.
invalid_region
The region is not available.
Fix: use region fra, or leave the region out.
invalid_report_status
An admin passed a report status that does not exist.
Fix: for deplane admin abuse list, use open, investigating, actioned, rejected, or all. For deplane admin abuse resolve, use investigating, actioned, or rejected.
invalid_report_url
An abuse report's URL is missing or is not a valid http or https address.
Fix: paste the full address of the page you are reporting, for example https://example-app.deplane.dev/login.
invalid_request
The connection request is missing something or is malformed. Deplane requires PKCE with the S256 method.
Fix: update the AI tool and connect again. If you build the tool, send a code_challenge made with S256 and a state of at most 500 characters.
invalid_restore_time
The restore time is not a time Deplane understands.
Fix: use latest, a time like 2026-10-15T14:31:20Z, or in the CLI 2026-10-15 16:31 (your local time) or -10m (ten minutes ago).
invalid_role
A team role is member or owner.
Fix: use member (deploys and manages apps) or owner (also invites and removes people).
invalid_root_dir
The root folder is not a plain path inside the repository.
Fix: Use a path like apps/web (no ..), or leave it empty.
invalid_schedule
The cron schedule is not valid.
Fix: use five fields in UTC (minute, hour, day of month, month, day of week), for example */15 * * * * or 0 3 * * *, or @hourly, @daily, @weekly, @monthly.
invalid_scope
There is no such secret kind.
Fix: use runtime (the default) or build. In the CLI, pass --build for build secrets.
invalid_secret
An argument to deplane secrets set is not NAME=VALUE.
Fix: pass each secret as NAME=VALUE, for example deplane secrets set DATABASE_URL=postgres://....
invalid_secret_name
Secret names use capital letters, digits, and underscores, and do not start with a digit.
Fix: rename it, for example DATABASE_URL. See Secrets.
invalid_secret_value
A secret value contains a NUL byte, which environment variables cannot hold.
Fix: encode the value, for example as base64.
invalid_setting
The value is not valid for that setting.
Fix: Check the value and try again.
invalid_signature
A webhook's signature did not match Deplane's GitHub App secret.
Fix: Only GitHub can send webhooks to Deplane; nothing to do.
invalid_size
There is no such size.
Fix: use small, medium, or large.
invalid_sleep
Apps sleep after 5, 15 or 60 minutes without a request, or never; a stopped app cannot sleep.
Fix: use deplane scale --sleep 15m, or --sleep off.
invalid_sort
An admin usage request asked to rank teams by something Deplane does not total.
Fix: use sort=cpu, sort=memory, sort=bandwidth, sort=requests, sort=build, or sort=instances.
invalid_source
The upload is not a gzip-compressed tar archive, or it is damaged.
Fix: upload with deplane deploy, which packages the folder for you.
invalid_stack
The stack label sent with an app's settings is not a short label.
Fix: send at most 40 letters, digits, spaces, and . + # - /, such as Next.js or Python. The CLI and dashboard send it for you.
invalid_status
An admin passed an access request status that does not exist.
Fix: use pending, approved, or denied.
invalid_tail
--tail is not a number of lines from 0 to 1000.
Fix: for example deplane logs --tail 200.
invalid_team_name
A team name is 2 to 50 characters.
Fix: pick a name like Acme or Acme Engineering.
invalid_text
The request contains a NUL character or text that is not valid UTF-8.
Fix: Remove the control characters and send it again.
invalid_token_kind
A token kind other than cli or ci was requested.
Fix: use kind ci for automation. deplane tokens create does this for you.
invalid_token_name
A token name must be 1 to 100 characters.
Fix: name the token after where it is used, for example github-actions.
invalid_ttl
The token lifetime is out of range.
Fix: use 1 to 365 days, or leave it out for the default of 90 days.
invalid_use_case
The use case in an access request is longer than 2000 characters.
Fix: shorten the description.
invalid_version
The release version is not a positive number.
Fix: run deplane releases to see the versions, then deplane rollback 3 or deplane rollback v3.
invite_invalid
The invitation link was already used, revoked, or is older than 7 days.
Fix: ask the person who invited you for a new link.
key_rejected
The service did not accept the API key.
Fix: Copy the key again from the service's console and paste it whole.
key_unchecked
Deplane could not check the key with the service, so it was not saved.
Fix: Try again in a minute.
kubernetes_unavailable
The API server cannot read the cluster, so the admin console cannot show servers.
Fix: set KUBECONFIG for deplane-api (operators).
last_owner
A team needs at least one owner.
Fix: make someone else an owner first.
layer_device_file
The built image contains a device file.
Fix: do not create device files in the image, for example with mknod. Deplane provides /dev.
layer_path_traversal
The built image contains a path that points outside the image.
Fix: check the Dockerfile's COPY and ADD steps, and any archives they unpack, for paths with .. in them.
layer_setuid
The built image contains a setuid or setgid file outside the system folders, or replaces a system folder such as /usr or /bin with a link.
Fix: remove the setuid or setgid bit (chmod u-s,g-s) or install the program under /usr/bin. Keep /usr, /bin, /sbin, and /usr/local/bin as real folders.
layer_too_large
A layer of the built image is larger than 2 GB.
Fix: make the image smaller. Leave build tools, caches, and data files out of the final stage.
layer_unsupported
The built image has a layer type Deplane does not run.
Fix: build with a standard Dockerfile or without one. Foreign and zstd layers are not supported.
limit_apps
Your organization has as many apps as its plan allows.
Fix: destroy an app you no longer need with deplane apps destroy NAME, or email support@deplane.cloud to raise the limit.
limit_build_minutes
Your organization used all its build minutes for this month.
Fix: wait until the 1st of next month (UTC), or email support@deplane.cloud to raise the limit.
limit_instances
The change needs more instances, across all your apps, than your plan allows.
Fix: use fewer instances, scale down another app, or email support@deplane.cloud to raise the limit.
limit_log_streams
Your organization already has as many live log streams open as its plan allows. A deploy that follows its build log counts too.
Fix: stop another deplane logs -f or a running deploy, then try again. A deploy still finishes without showing the log.
limit_memory
The change needs more memory, across all instances of all your apps, than your plan allows.
Fix: use a smaller size or fewer instances, scale down another app, or email support@deplane.cloud to raise the limit.
limit_size
Your plan does not include this instance size.
Fix: use a size your plan includes (the message lists them), or email support@deplane.cloud.
logs_unavailable
Logs are not available right now.
Fix: try again in a few minutes. If it keeps happening, email support@deplane.cloud.
magic_link_invalid
The sign-in link is invalid, expired, or already used.
Fix: request a new link on the sign-in page. Links work once and expire after 15 minutes.
missing_database
A deplane db command needs the database it acts on.
Fix: pass its name, for example deplane db attach main --app shop. deplane db lists them.
missing_delivery
A GitHub webhook arrived without its X-GitHub-Delivery ID, so Deplane refused it. GitHub always sends one; a request without it is not from GitHub.
Fix: Nothing to do if you use the Deplane GitHub App. Custom senders must forward GitHub's headers unchanged.
missing_domain
A deplane domains command needs the domain it acts on.
Fix: pass it, for example deplane domains add www.example.com. deplane domains lists the app's domains.
missing_email
A deplane team command needs an email address.
Fix: pass it, for example deplane team invite colleague@company.com.
missing_flag_value
A flag that needs a value was given none.
Fix: pass it as --flag VALUE, for example --tail 200.
missing_id
The command needs an ID.
Fix: pass it, for example deplane tokens revoke ID or deplane disks restore APP BACKUP-ID. deplane tokens list and deplane disks backups APP show the IDs.
missing_name
The command needs a name.
Fix: for example deplane apps destroy my-app or deplane tokens create github-actions.
missing_process
A deplane processes command needs the process it acts on.
Fix: pass its name, for example deplane processes scale worker 2. deplane processes lists them.
missing_reason
A suspension needs a reason.
Fix: pass --reason TEXT, for example deplane admin suspend-app NAME --reason "Phishing, report abr_...".
missing_report
The command needs an abuse report ID.
Fix: pass it, for example deplane admin abuse show ID. deplane admin abuse list shows the IDs.
missing_request
The command needs an access request's email or ID.
Fix: for example deplane admin approve dev@example.com.
missing_target
deplane admin unsuspend needs exactly one target.
Fix: pass --app NAME or --org SLUG, not both.
network_error
The CLI could not reach the Deplane API, or the connection broke.
Fix: check your internet connection and run the command again. Set DEPLANE_API_URL if you use a different API.
no_app
No app is selected. There is no deplane.toml here and no --app flag.
Fix: pass --app NAME, or run the command in a folder with a deplane.toml. deplane launch creates one.
no_backup_yet
The database has no finished full copy yet, so it cannot be restored.
Fix: the first copy finishes a few minutes after a database is created; try again soon.
no_builds
An AI tool asked to wait for a deploy of an app that has never been built.
Fix: deploy it with deploy_files or deploy_github first.
no_config_dir
There is no keychain and no config folder to store your login in.
Fix: set DEPLANE_TOKEN instead.
no_earlier_release
There is no earlier release that ran successfully, so deplane rollback has nothing to go back to.
Fix: run deplane releases and roll back to a specific version with deplane rollback VERSION.
no_passkey
There is no passkey on this account yet.
Fix: set up a passkey first, from your account page.
no_pending_request
There is no pending access request for that email.
Fix: list them with deplane admin requests.
no_disk_space
There is no free disk space on the platform right now, so the disk was not added. We have been alerted.
Fix: try again later or contact support (support@deplane.cloud). See Disks.
no_releases
This app has no releases yet, so there is nothing to roll back to.
Fix: deploy it first with deplane deploy.
no_secrets
No secrets or secret names were given.
Fix: run deplane secrets set NAME=VALUE or deplane secrets unset NAME.
no_team
This account is not in a team any more.
Fix: Ask a team owner to invite you again, or request access at /beta.
not_a_member
The address is not in your team.
Fix: run deplane team to see the members.
not_found
The resource does not exist, or you do not have access to it. Deplane answers the same way in both cases, so nobody can find out what other organizations have.
Fix: check the name or ID. deplane apps lists your apps.
not_logged_in
You are not logged in.
Fix: run deplane login, or set DEPLANE_TOKEN.
not_signed_in
Your sign-in session in the browser has ended.
Fix: sign in again.
not_suspended
An admin tried to unsuspend an app or organization that is not suspended.
Fix: nothing to do. Check the name or slug.
nothing_to_change
An app settings change had no port, health check, or automatic rollback setting.
Fix: set the port and health check in deplane.toml under [service], then run deplane deploy. Turn automatic rollback on or off with deplane config --auto-rollback on|off.
nothing_to_redeploy
The app has never been built, so there is no source to build again.
Fix: deploy it first with deplane deploy, from the dashboard, or by connecting GitHub.
nothing_to_scale
deplane scale was given neither a number of instances nor a size.
Fix: run deplane scale 2 or deplane scale --size medium.
nothing_to_switch
The database you switch from is not attached to any app, or it is the same database.
Fix: pass the original database with --from, or attach the restored database to an app with deplane db attach.
oauth_not_allowed
Only you, signed in to the dashboard, can connect an AI tool. CLI logins, CI tokens, AI tool connections, and admin views of a team cannot approve a connection.
Fix: sign in to the dashboard yourself and try again.
oauth_request_expired
This connection request expired after 10 minutes or was already answered.
Fix: start connecting Deplane again from your AI tool.
oauth_unavailable
Connecting AI tools is not set up on this server, so the OAuth endpoints and the connections list are off.
Fix: use a CI token from the Tokens page instead.
ops_not_allowed
An ops token tried something other than deploying the operations team's canary.
Fix: use your own login for anything else.
origin_not_allowed
A browser on another website sent an access request. The API takes them from a browser only on the Deplane site.
Fix: request access on the Deplane site's beta page, or email support@deplane.cloud. The CLI and scripts that send no Origin header are not affected.
outside_backup_window
The time is outside the database's restore window. The message lists the window, or windows when there are gaps.
Fix: pick a time inside it, or restore the latest moment.
owners_only
Only the team's owners can invite or remove people.
Fix: ask an owner of the team.
passkey_ceremony_missing
No passkey request is in progress in this browser.
Fix: reload the page and try again.
passkey_failed
The passkey could not be verified.
Fix: try again with a passkey registered to this account on this site.
passkey_required
This needs your passkey or security key. Admins confirm only with a passkey, and approving a CLI login needs one.
Fix: confirm with your passkey or security key, then try again.
passkeys_unavailable
Passkeys are not set up on this server.
Fix: email support@deplane.cloud.
payload_too_large
The webhook's body is larger than 10 MB.
Fix: Only GitHub sends webhooks to Deplane; nothing to do.
preview_database_needs_previews
Preview databases were turned on with pull request previews off. A preview database belongs to a preview, so there would be nothing to give it to. (HTTP 422)
Fix: Turn previews on, or leave preview databases off.
process_exists
The app already has a worker or cron job with that name.
Fix: pick another name, or change the existing process.
quota_exceeded
A general quota was reached. Like the limit_ codes, the CLI exits with code 6.
Fix: follow the fix in the message, or email support@deplane.cloud to raise the limit.
railpack_plan_failed
Deplane could not work out how to build this project without a Dockerfile. The message shows the last lines of the build planner's output.
Fix: add a Dockerfile, or follow the messages in the build log. Check that your project files, such as package.json or requirements.txt, are in the folder you deploy.
rate_limited
Too many requests in a short time. The response has a Retry-After header.
Fix: wait a minute and try again. See the rate limits in Limits.
registry_unavailable
The built image could not be checked because our image storage was unavailable.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
release_not_found
That release version does not exist for this app.
Fix: run deplane releases to see the versions.
report_too_long
A field of an abuse report is longer than allowed.
Fix: shorten the details. Attach evidence by email to abuse@deplane.cloud instead.
reserved_domain
The hostname is one of Deplane's own domains.
Fix: every app already has an address on Deplane's domain. Connect a domain you own instead.
restore_running
A restore of this disk is already under way.
Fix: wait for it to finish; the app starts again when it is done. A backup cannot start, and the disk cannot be destroyed, during a restore.
schedule_on_worker
A worker was given a schedule. Workers always run.
Fix: leave the schedule out, or create a cron job instead.
second_factor_locked
Too many wrong authenticator or recovery codes. Codes are locked until the time in the message.
Fix: use your passkey, or try again after that time.
secret_name_reserved
PORT and names starting with DEPLANE_ are set by Deplane.
Fix: pick another name.
secret_not_found
You tried to remove secrets that are not set. Nothing was changed.
Fix: run deplane secrets list to see the names. For build secrets, pass --build.
secret_too_large
A secret value is larger than 32 KB.
Fix: store large files elsewhere and put their location in the secret.
secrets_too_large
Together, the app's secrets of this kind would be larger than 256 KB.
Fix: remove secrets you no longer need with deplane secrets unset NAME.
session_missing
Your sign-in session in the browser has ended.
Fix: reload the page and try again.
source_mismatch
The uploaded source does not match the build that was queued for it.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
source_too_large
The project is larger than the upload limits: 100 MB compressed or 2 GiB uncompressed.
Fix: add build output, dependencies, and large data files to .dockerignore or .gitignore, then deploy again.
source_too_many_files
The project has more than 200,000 files.
Fix: add dependencies and build output, for example node_modules, to .dockerignore or .gitignore.
source_unavailable
The uploaded source could not be loaded into the build.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
step_up_required
This action needs a fresh confirmation with your second factor from the last 5 minutes (a passkey for admins). Creating tokens, inviting or removing team members, destroying apps, deleting, restoring or switching databases, and admin commands need it. Destroying an app and deleting, restoring or switching a database each use up their confirmation: the next one asks again.
Fix: run the command in a terminal. The CLI opens your browser so you can confirm, then retries. For 5 minutes after that, the other actions also work from scripts. See Agents, CI, and scripts.
template_app_unhealthy
A template's app was built but did not start (its health check failed). The deploy stopped at its last step; everything it made is kept.
Fix: read the app's logs (deplane logs --app APP), then retry with deplane templates retry DEPLOY-ID or the dashboard's Retry.
template_build_failed
A template's build failed. The deploy stopped; everything it made is kept.
Fix: open the build log on the app's page, then retry; a retry builds again.
template_credentials_not_yours
Only the person who started a template deploy can see the admin sign-in it set up; for a deploy started by a CI token, a team owner can.
Fix: ask the teammate who deployed it, or a team owner.
template_credentials_shown
The admin sign-in of this template deploy was already shown, more than 10 minutes ago. Deplane shows it once (the same person can ask again within 10 minutes, in case the first answer was lost) and keeps no way to show it later.
Fix: for Vaultwarden, set a new ADMIN_TOKEN in the app's Variables and redeploy. Grafana, Listmonk and Gitea offer no reset Deplane can reach: delete the app and deploy the template again, or email support@deplane.cloud.
template_deploy_failed
deplane launch --template followed a deploy that failed. The message says which step and why.
Fix: run deplane templates retry DEPLOY-ID to continue from that step, or deplane templates delete DEPLOY-ID to remove what it made.
template_deploy_not_done
The admin sign-in of a template deploy is shown once the deploy is done.
Fix: wait for the deploy to finish (deplane templates list shows it), then ask again.
template_deploy_not_failed
Only a deploy that failed can be retried; this one is running, done or deleted.
Fix: see where it is with deplane templates list.
template_deploy_running
Your team is already deploying a template (one at a time), or you tried to delete a deploy that is still running.
Fix: wait for it to finish or fail; deplane templates list shows it.
template_needs_upgrade
The template needs more than your plan includes, such as a larger size, more memory, more instances, apps, databases or disk. The message says what it needs and what your plan has.
Fix: see the larger plans at https://deplane.cloud/pricing, or email support@deplane.cloud.
template_no_credentials
This deploy's template sets up no admin sign-in, or the deploy was made before its template did (2026-10-27), so there is nothing to show.
Fix: follow the template's note to sign in.
template_no_room
Your plan could hold the template, but your team is using too much of it right now. The message says what it needs and what is free.
Fix: destroy or scale down an app (deplane apps), or delete a database or disk you no longer need, then deploy again.
template_not_found
There is no template with that name.
Fix: see the templates with deplane templates list or at https://deplane.cloud/templates.
template_not_ready
This template's image is not ready yet, so it cannot be deployed.
Fix: pick another template, or try again later.
template_resource_gone
Something a template deploy made (its app, database or disk) was deleted outside the deploy, so it cannot continue.
Fix: delete the deploy (Delete all of it, or deplane templates delete DEPLOY-ID) and deploy the template again.
template_timeout
A step waited too long: the database was not ready in 15 minutes, or the build and rollout took more than 45.
Fix: retry. If it keeps happening, email support@deplane.cloud.
token_in_env
DEPLANE_TOKEN is set, so a stored login would not be used.
Fix: unset DEPLANE_TOKEN, then run deplane login again.
too_many_alert_channels
A team can have 10 alert channels.
Fix: Remove one you no longer use first.
too_many_databases
Your team already has 5 databases, the most allowed. Pull request preview databases do not count.
Fix: delete one you no longer need, or email support@deplane.cloud.
too_many_deploys
The app was deployed 10 times in the last hour, the most allowed per app.
Fix: wait a few minutes and deploy again. Commands that do not build, such as deplane scale, deplane secrets set, and deplane rollback, still work.
too_many_domains
The app already has 10 custom domains, the most allowed.
Fix: remove a domain you no longer use, then add the new one.
too_many_invites
The team has 20 open invitations, the most allowed.
Fix: revoke invitations that were not used.
too_many_processes
The app already has 10 workers and cron jobs, the most allowed.
Fix: remove one you no longer need first.
too_many_uploads
Your organization already has two uploads in progress.
Fix: wait for them to finish, then run the command again.
totp_exists
An authenticator app is already set up on this account.
Fix: use your existing authenticator app.
totp_setup_missing
No authenticator setup is in progress.
Fix: open the authenticator setup page again.
totp_unavailable
Authenticator apps are not available for this account. Admin accounts use only passkeys.
Fix: use a passkey or security key.
unauthorized
Your login is missing, expired, or revoked.
Fix: run deplane login. In CI, check that DEPLANE_TOKEN holds a token that has not expired or been revoked.
unexpected_argument
The command got an argument it does not take.
Fix: run deplane help for usage. See the CLI reference.
unknown_command
There is no such command.
Fix: run deplane help to see the commands.
unknown_file
A detection request included a file that detection does not read.
Fix: send only the project's manifest files (package.json, requirements.txt, pyproject.toml, go.mod, Gemfile, composer.json, pom.xml, Dockerfile, index.html, and similar). The dashboard does this for you.
unknown_flag
There is no such flag.
Fix: run deplane help to see the flags.
unknown_setting
That setting cannot be changed from the admin console.
Fix: Use one of the settings listed in Admin, Settings.
unsafe_link
A symbolic link in the project points outside the project folder.
Fix: remove the link, or copy what it points to into the project folder. deplane deploy skips such links and tells you.
unsafe_path
The upload contains a path that is unsafe: outside the project folder, through a symbolic link, or listed twice.
Fix: upload with deplane deploy, which packages each file once and only from the project folder. Replace symbolic links to folders with real folders.
unsupported_entry
The upload contains something that is not a file, folder, or symbolic link.
Fix: remove device files, pipes, and hard links from the project folder.
unsupported_grant_type
The token request used a grant type Deplane does not offer.
Fix: use authorization_code or refresh_token.
unsupported_media_type
An upload was not sent as a gzip-compressed tar archive.
Fix: use deplane deploy, which packages and uploads the folder for you.
unsupported_response_type
Deplane supports only the authorization code flow (response_type=code).
Fix: update the AI tool and connect again. If you build the tool, use the authorization code flow with PKCE.
upload_interrupted
The upload was interrupted.
Fix: run the command again. The CLI retries uploads automatically.
usage
The build runner was started incorrectly. This is a problem on our side.
Fix: run deplane deploy again. If it keeps happening, email support@deplane.cloud.
invalid_redis_name
A Redis name is 3 to 30 characters: lowercase letters, digits and single hyphens, starting with a letter.
Fix: pick a name such as cache, queue or sessions.
limit_redis
Your plan allows fewer Redis than your team would then have.
Fix: destroy one you no longer need with deplane redis destroy NAME, or email support@deplane.cloud to raise the limit.
mcp_redis_url
AI tools connected to Deplane cannot set REDIS_URL by hand.
Fix: attach a Redis with the attach_redis tool, or set it yourself in the dashboard. See MCP.
no_redis_space
There is no free Redis space on the platform right now. We are alerted automatically.
Fix: try again later, or email support@deplane.cloud.
redis_attached_elsewhere
The app already uses another Redis as REDIS_URL. An app has one Redis.
Fix: detach the other one first with deplane redis detach NAME --app APP.
redis_exists
Your team already has a Redis with that name.
Fix: pick another name.
redis_failed
The Redis a template deploy made could not start.
Fix: Retry; if it fails again, email support@deplane.cloud.
redis_not_found
Your team has no Redis with that name.
Fix: see your team's Redis with deplane redis list.
redis_on_preview
A pull request preview cannot use a Redis.
Fix: attach the Redis to the app itself; its previews run without it.
redis_url_in_use
The app already has a variable called REDIS_URL that did not come from a Redis here, and attaching would overwrite it.
Fix: remove it with deplane secrets unset REDIS_URL --app APP, then attach the Redis.
redis_busy
Apps kept attaching to the Redis while it was being destroyed, so it was left as it was.
Fix: try destroying it again.
watch_not_allowed
A watch token tried something other than reading the platform's health or reporting checks and drills.
Fix: use your own login for anything else.
This page is also available as Markdown. AI agents can start at /llms.txt.