Error codes
Every failure from the command or an MCP tool has the same shape: a stable code, a plain message, a fix an AI can act on, the file to edit when known, and a link to the page for that code. Your AI reads these so you don’t have to.
| Code | What it means | Retry after fix |
|---|---|---|
| DETECT_NO_PROJECT | No deployable project found in this directory. | yes |
| DETECT_UNSUPPORTED_FRAMEWORK | The framework in this project is not supported yet. | yes |
| DETECT_AMBIGUOUS_ENTRYPOINT | More than one way to start this app was found. | yes |
| ENGINE_CONVERSION_REQUIRED | This app uses a database engine the platform does not host. | yes |
| AUTH_PROVIDER_AVAILABLE | This app implements its own login, but the platform already signs people in. | yes |
| BUILD_FAILED | The build failed. | yes |
| BUILD_MISSING_DEPENDENCY | Build failed: a module the code imports is not in package.json. | yes |
| BUILD_TIMEOUT | The build ran longer than the limit and was stopped. | yes |
| BUILD_IMAGE_TOO_LARGE | The built app is larger than the runtime limit. | yes |
| MIGRATE_FAILED | The database migration failed. | yes |
| MIGRATE_DESTRUCTIVE_BLOCKED | The migration would drop or rewrite existing data and was not applied. | yes |
| PROVISION_FAILED | The platform could not create a resource this app needs. | yes |
| ROUTE_FAILED | The app was built but could not be given an address. | yes |
| DOMAIN_INVALID | That is not a domain name the platform can attach. | yes |
| DOMAIN_SCREENING_HOLD | This domain is being reviewed before it can be attached. | no |
| DOMAIN_DNS_PENDING | The DNS record for this domain has not been seen yet. | yes |
| HEALTHCHECK_FAILED | The new version started but did not answer a request. | yes |
| DEPLOY_IN_PROGRESS | Another deploy of this project is already running. | yes |
| NOTHING_CHANGED | The app and its settings are identical to the live version. | no |
| SCHEMA_DRIFT | Rolling back code only: the database schema changed after the target version. | yes |
| UNAUTHORIZED | No valid credential was presented. | yes |
| FORBIDDEN | This credential cannot act on that project. | no |
| BIND_TOKEN_EXPIRED | This link has expired. | yes |
| BIND_TOKEN_CONSUMED | This app is already in use on another device. | no |
| PROJECT_NOT_FOUND | No project with that id exists. | no |
| PROJECT_EXPIRED | This app was never claimed and has been removed. | yes |
| ACCOUNT_REQUIRED | This action needs a claimed account. | yes |
| SPEND_CAP_REACHED | This app is paused because it reached the account's spending limit. | no |
| RATE_LIMITED | Too many requests in a short time. | yes |
| MAIL_UNDELIVERABLE | The email could not be sent. | yes |
| EGRESS_NOT_ALLOWED | The app tried to reach an address it is not allowed to reach. | no |
| DESKTOP_SHELL_UNAVAILABLE | Desktop apps cannot be made for that system right now. | yes |
| PLAN_LIMIT_REACHED | The account's plan does not allow this. | no |
| SECRETS_TOO_LARGE | The app's settings exceed the 4 KB runtime limit. | yes |
| SOURCE_UNAVAILABLE | The source for that version is no longer stored. | no |
| LOGIN_CODE_INVALID | That sign-in code is not valid or has expired. | yes |
| MOBILE_STORE_STEP_REQUIRED | The app's server and web version are live. Publishing the phone app to the App Store or Google Play is not something the platform does yet. | no |
| MOBILE_NO_SERVER_FOUND | This is a phone app with no server in the folder, so there is nothing to host yet. | yes |
| PUBLISH_NOT_CONFIRMED | Making an app public is not something to do on someone's behalf without asking. | yes |
| STORE_ACCOUNT_REQUIRED | No developer account is connected for that store. | no |
| STORE_CREDENTIAL_REJECTED | Apple or Google refused the connected developer credential. | no |
| RELEASE_IN_PROGRESS | A release to that store is already running for this app. | yes |
| RELEASE_PLATFORM_UNAVAILABLE | Releases to that store are not available yet. | no |
| RELEASE_NOT_CONFIRMED | A store release costs money, so it needs the amount confirmed before it starts. | yes |
| RELEASE_QUOTE_EXPIRED | That price quote is no longer current. | yes |
| DOMAIN_UNAVAILABLE | That domain cannot be bought here. | no |
| DOMAIN_QUOTE_EXPIRED | That price quote is no longer current. | yes |
| DOMAIN_ORDER_IN_PROGRESS | A domain is already being bought for this app. | yes |
| AI_UNAVAILABLE | Drafting with AI is not set up on this server. | no |
| SITE_PAGE_PROTECTED | That page is part of the site itself and cannot be deleted or given a different address. | no |
| SITE_SLUG_TAKEN | Another page or post already uses that address. | yes |
| INTEGRATION_NOT_CONFIGURED | That figure comes from an outside service that is not connected. | no |
| VALIDATION_FAILED | The request was malformed. | yes |
| INTERNAL | Something went wrong on the platform. | yes |