The server refused: tier, daily cap, rate limit, version floor, or not found — and a package this CLI is too old to install.
Your CLI is too old for this
exit 3#upgrade_required
Your CLI is older than something the server needs. Three different things produce this, and they differ in what still works: ONE package is too large for the safety limits built into your version, and everything else keeps working; or installing and updating skills needs a newer CLI, while login, list and uninstall still work; or your CLI is below the minimum version the API accepts at all, in which case every command fails, including login.
The CLI carries its own install-safety limits so a compromised server cannot fill your disk or write outside the target directory. Those limits are fixed at the version you installed, so a package published above them needs a newer CLI, and only that package is refused. Installs and updates also have their own minimum: promptdock 1.2.1 and older can overwrite files you edited and delete files you added when they update a skill, so the server refuses those two commands for them. Separately, the API enforces a minimum CLI version for wire-breaking changes; a client below it is rejected before it authenticates, so that refusal is account-wide. The error text tells you which one you hit: a message that names a skill is the first, one that says "Installing and updating skills now needs" is the second, and "below the minimum supported version" is the third.
Fix
npx promptdock@latest install <handle>/<slug>- If you installed globally: npm i -g promptdock@latest
- `promptdock upgrade` updates your installed skills; it does not update the promptdock CLI. To update the CLI: npm i -g promptdock@latest (or use npx promptdock@latest).
- In CI, unpin the version or raise the pin to the version named in the error.
- If you cannot even log in, it is the account-wide floor — upgrade first, then run `promptdock login`.
This is a premium skill
exit 3#insufficient_tier
The skill's contents are available on a paid plan and your account is on a lower tier.
Premium skills unlock by subscription, not per item.
Fix
- https://www.promptdock.ai/pricing
- Free skills install with no plan at all.
Daily premium-skill limit reached
exit 3#cap_hit
You have unlocked the maximum number of distinct premium skills in a rolling 24-hour window.
The cap counts distinct skills, not installs. Re-installing something already unlocked does not count again.
Fix
- Wait for the window named in the error.
- Skills you have already unlocked keep installing.
No skill with that reference
exit 3#not_found
The ref did not resolve to a skill you can see.
Either the ref is wrong, or the skill is a draft, unlisted, or has been taken down.
Fix
- The format is handle/slug — for example: npx promptdock@latest install alice/seo-audit
- A pasted promptdock.ai skill URL also works.
- Check the account: npx promptdock@latest whoami
Your account is disabled
exit 3#account_disabled
The account behind your token is disabled, so every command fails — not just this one. Nothing was installed.
Disabling is a soft delete with a recovery window (30 days for an account you close yourself): your skills, installs and content all survive, but API access is cut immediately on the shared gate every route runs. The token is not the problem and re-running `login` will not help — a fresh token on a disabled account is refused the same way.
Fix
- Recover it in a browser: https://www.promptdock.ai/account/recover
- That page shows the deletion date, to the minute in UTC. After it the account and its data are purged and there is nothing left to recover.
- If you did not disable it, sort that out in the browser before re-running anything here.
If you did not disable it, or the recovery page will not take it, email [email protected] with the command and the exit code — the link pre-fills what to include.
This account is suspended
exit 3#account_suspended
Support has put a hold on the account behind your token, so every command fails — not just this one. Nothing was installed.
A suspension is not a deletion and not a closure: your skills, installs and content are all still there, and nothing is on a countdown. What it does mean is that the hold can only be lifted by the people who applied it, so there is no self-serve page for this one and a fresh token will be refused the same way.
Fix
- Write to support from the address on the account and ask what the hold is about.
- Do not create a second account to work around it; that is usually what the hold is for.
Always — a suspension can only be lifted by support, email [email protected] with the command and the exit code — the link pre-fills what to include.
Your account is closing
exit 3#account_closing
You have started closing this account, so it will not take on anything new. Reading, downloading and settling what is already open all still work.
Closing is a wind-down you can leave at any time, so it deliberately stops short of cutting you off: you keep every action that helps you finish — withdraw what you are owed, cancel a challenge, stop a renewal — and lose only the ones that would give you something new to settle.
Fix
- If you have changed your mind, keep the account: https://www.promptdock.ai/dashboard/profile?tab=account
- If you meant to close it, finish the things it is waiting on; that page lists them.
The skill changed between resolve and install
exit 3#version_conflict
A new version was approved in the seconds between the CLI resolving the skill and asking for its files. Nothing was downloaded or written.
Install pins the exact version resolve returned and the server serves that one or refuses. It will not quietly substitute the newer version, because a package assembled from two versions is a worse outcome than a failed command — and you would have no way to tell it had happened.
Fix
- Re-run the same command — the second attempt resolves the new version and installs it.
- Nothing on your side caused this: the author shipped an update at that moment.
- In CI, treat this footer as retryable — one retry is enough unless the skill is being republished in a loop.
That conflicts with something already recorded
exit 3#conflict
The server refused because the record it was asked to create already exists.
It is the generic uniqueness refusal (a database unique-violation, surfaced as a 409). From the CLI the usual cause is two runs racing each other on the same account — parallel CI jobs installing the same skill at the same instant.
Fix
- Read the message above: it is more specific about what already existed than this page can be.
- Retry once — if the existing record is the one you wanted, the retry succeeds.
- In CI, do not install the same skill from two jobs concurrently.
The server rejected the request as malformed
exit 3#validation_error
Something the CLI sent was not a shape the server accepts. Nothing was installed.
Two causes, and the message above distinguishes them. Either the input was wrong — a ref that is not `handle/slug`, an id that is not a UUID — or your CLI is older than the request shape the server now expects, in which case every run of that command fails identically.
Fix
- Check the ref: it is handle/slug, e.g. npx promptdock@latest install alice/seo-audit
- A pasted promptdock.ai skill URL also works — the CLI parses it.
- If the input is right, run it through the latest CLI: npx promptdock@latest install <handle>/<slug>
That account cannot do this
exit 3#not_owner
The server refused the read or write behind this command for the account your token belongs to.
Row-level security denied it. From the CLI the overwhelmingly likely cause is being signed in as an account you did not mean to use — a token is per machine, so the one on this machine may not be the one you have open in the browser, and nothing prints the account until you ask.
Fix
- Check which account this machine is using: npx promptdock@latest whoami
- If it is the wrong one: npx promptdock@latest logout, then npx promptdock@latest login
- In CI, check that PROMPTDOCK_TOKEN belongs to the account you meant to use.
Something the server depends on is down
exit 3#service_unavailable
An upstream dependency was unreachable or is not configured. Not your account, not the skill, and nothing was installed.
This is the one server-side failure the API does not redact: an operator-fixable state is something you are entitled to read plainly rather than as an anonymous crash, so the sentence above names it. No `/cli` route raises it today, so seeing it from the CLI means a shared dependency broke, not that you did anything unusual.
Fix
- Retry in a few minutes — it is transient by definition.
- Check https://www.promptdock.ai loads in a browser. If the site is up and this persists, it is a server configuration problem and there is nothing to fix from the CLI.
- In CI, treat this footer as retryable rather than a hard failure.
If the site loads in a browser and this is still failing minutes later, email [email protected] with the command and the exit code — the link pre-fills what to include.
Your second factor is needed first
exit 3#mfa_required
An action was refused until two-factor authentication is completed.
CLI tokens are exempt from the second-factor challenge by design — the token was minted inside a browser session that had already passed it — so the terminal does not normally produce this. Where it does reach CLI users is the browser half of `login`: with an authenticator app enrolled, the approval page asks for a code first, and until you enter it the terminal keeps counting down with no explanation for the wait.
Fix
- Finish the authenticator prompt in the browser, then approve the pairing code.
- If the countdown already ran out, start over: npx promptdock@latest login
- If this reached the terminal itself, it is a server-side problem — capture the message and `promptdock --version`.
If this reached the terminal itself rather than the browser approval page, email [email protected] with the command and the exit code — the link pre-fills what to include.
Sign in again to continue
exit 3#reauth_required
A payout action was refused until you sign in again. This happens on the website, not in the terminal: no `/cli` route asks for it.
Creating a payout account or opening Stripe onboarding hands out a Stripe session that decides where your money goes, so it needs a sign-in from the last few minutes, not just a session that is still open. Members with an authenticator app confirm with a code from it.
Fix
- Follow the "Confirm it's you" prompt in the browser; the action resumes afterwards.
- If you are signed in as a different account, sign out and sign in as the account that owns the payouts.
Sign-in was declined
exit 3#access_denied
The browser approval for this CLI session was denied.
Someone chose Deny on the device-approval screen, or approved a different code.
Fix
npx promptdock@latest login- Check the code in the browser matches the one in your terminal.
Unrecognized server response
exit 3#verdict
The server answered with a decision this CLI does not know how to act on.
The server is newer than the CLI.
Fix
npx promptdock@latest install <handle>/<slug>
If you are already on the latest CLI and still get this, email [email protected] with the command and the exit code — the link pre-fills what to include.
Too many requests
exit 3#rate_limited
The API asked you to slow down. Nothing was installed or changed.
CLI routes are rate limited per account and per IP. The per-IP half is the one that surprises people: several developers behind one office NAT, or a CI fleet on shared egress, share a bucket even with different accounts.
Fix
- Wait for the period named in the message, then retry.
- In CI, stagger parallel jobs rather than starting them in one burst.
- If you are behind a shared NAT with colleagues, that is the likely cause — it is not your account alone.
The server returned an error
exit 3#api
A request failed. Usually the server explained why in the message above this footer — but if you were told the response redirected somewhere unexpected, nothing reached the server at all.
For an ordinary failure the server's own message is more specific than anything this page can say. For the redirect case the CLI refuses to follow a cross-domain or non-https hop, because a captive portal or a MITM can mint one — so it stops rather than sending your token onward.
Fix
- Read the message above — for an ordinary failure it is the most specific thing you have.
- If it mentions a redirect: check PROMPTDOCK_API_BASE, and whether you are behind a captive portal or a corporate proxy.
- Retry if it looks transient. If it is a skill-content problem, report it from https://www.promptdock.ai/dashboard/skill/r/<handle>/<slug> — that needs a sign-in, because Report lives on the dashboard page, not the public one.
If the message is not about a skill's contents and does not explain itself, email [email protected] with the command and the exit code — the link pre-fills what to include.
No install found there
exit 3#not_installed
`update` or `uninstall` found no promptdock receipt in that directory.
The CLI only manages directories it installed, identified by `.promptdock.json`.
Fix
npx promptdock@latest list- Then re-run against a directory that appears in it.
Nothing installed by promptdock was found
exit 3#no_receipt
`list` or `update` scanned the known locations and found no receipts.
Either nothing is installed, or it was installed somewhere the CLI does not scan.
Fix
- Point at it explicitly: --dir ./path
- Or install one: npx promptdock@latest install <handle>/<slug>