PatchVault › Errors › Shopify CLI 5 migration
shopify.app.toml: api_key / top-level scopes (legacy) instead of client_id and [access_scopes]
An older shopify.app.toml uses keys the current app configuration schema does not document: api_key instead of client_id, scopes outside [access_scopes], and webhook subscriptions without a [webhooks] api_version.
Check your code free (runs in your browser)
The box is pre-filled with a sample that triggers this error. Paste your own file to check it. Nothing leaves this page.
Or scan your whole repo locally (free, stdlib Python, read-only):
python3 <(curl -fsSL https://patchvault-81y.pages.dev/starters/shopify-cli-scan.py) .
Get the Shopify CLI 5 migration auto-fixer: $9 one-time
Why it happens
Shopify's app configuration reference lists client_id (the app's public identifier) as required, puts scopes inside [access_scopes], and sets the webhook payload version with webhooks.api_version.
Manual fix
client_id = "<your client id>"
name = "Example App"
application_url = "https://app.example.com/"
embedded = true
[access_scopes]
scopes = "read_products"
[webhooks]
api_version = "2026-10"
Verify
Re-run your install/build and re-scan the file above. The finding should be gone. The paid fixer applies the same change across a repo: --dry-run shows the diff, --apply keeps a .bak of each file, and --rollback restores them.
Sources
Related errors
- shopify theme dev --poll removed in Shopify CLI 5.0
- shopify app logs / app logs sources removed in CLI 5.0
- SHOPIFY_CLI_PARTNERS_TOKEN → SHOPIFY_SERVICE_ACCOUNT_TOKEN
- shopify theme list --json: jq "Cannot index object"
- Shopify REST Admin API is legacy: move calls to GraphQL
Full guide and free terminal scanner: Shopify CLI 5 migration. Last checked 2026-10-31.