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. Two different things produce this, and they differ in blast radius: either ONE package is too large for the safety limits built into your version — everything else keeps working — 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. 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, not package-scoped. The error text tells you which one you hit: a named skill means the first, a minimum-version number means the second.
Fix
npx promptdock@latest install <handle>/<slug>- If you installed globally: npm i -g 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://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 90-day recovery window: 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://promptdock.ai/account/recover
- After 90 days 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.
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://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.
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`.
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>
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://promptdock.ai/dashboard/skill/r/<handle>/<slug> — that needs a sign-in, because Report lives on the dashboard page, not the public one.
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>