Space troubleshooting
The first request after a quiet period is slow
Section titled “The first request after a quiet period is slow”Symptom: the first page load or API call takes several seconds; everything after it is fast.
Space scales to zero when idle and is started by the first request that arrives. That request pays the start-up; the ones behind it do not. It is not an error, and nothing is lost — the request is served, just later than usual.
If it does not resolve at all, check https://api.space.destesi.io/healthz.
401 unknown_bearer_scheme from the CLI or a script
Section titled “401 unknown_bearer_scheme from the CLI or a script”Symptom: every dst space command or scripted request fails with 401,
while other dst commands work.
Space accepts an identity Personal Access Token (idn_pat_…) and nothing else.
The token dst login’s browser flow stores is a destesi-api key, which is a
different credential — Space rejects it before looking at the request.
Mint a PAT from your account’s tokens page and log in with it:
dst login --token idn_pat_…dst space checks the token’s prefix before making the request, so it tells
you this rather than passing a doomed call to the server.
401 missing_workspace_header
Section titled “401 missing_workspace_header”A PAT is scoped to a user, not a workspace, so the workspace is chosen per request:
X-Destesi-Workspace: acme-coThe CLI sends it from dst workspace switch <slug> or --workspace. Note it
is the workspace slug, not the ws_… id.
403 when creating an issue, while reading works fine
Section titled “403 when creating an issue, while reading works fine”Symptom: issues and channels list normally, but creating anything returns
403.
Reads do not pass the quota gate; writes do. A 403 on the write path with
reads healthy points at the workspace’s entitlement for Space rather than at
Space itself — the quota policy is answered by
entitlements, and a workspace with no Space
entitlement cannot be given an answer.
Check that Space appears in your launcher for that workspace. If it does not, the workspace is missing the entitlement and an operator has to grant it.
404 on an issue or channel you were sent a link to
Section titled “404 on an issue or channel you were sent a link to”Two different causes share one answer, deliberately:
- The id belongs to another workspace. Switch workspaces and try again.
- It is a private channel you are not a member of. Ask someone in it to add you.
Space answers 404 rather than 403 in both cases so that the API never
confirms the existence of something you cannot see.
Updates stop arriving live
Section titled “Updates stop arriving live”Symptom: a teammate’s change only shows up after a reload, or arrives with a delay.
Space delivers changes over a server-sent event stream. Where that is not
configured for a deployment, GET /v1/stream answers 503 live_disabled and
the app switches itself to polling rather than reconnecting forever. You keep
working; updates arrive later.
If you are running Space yourself, the stream needs a Redis URL in the api’s environment. Without one the api boots and everything else works — only the stream is affected.
The assistant bubble says it is off
Section titled “The assistant bubble says it is off”POST /v1/chat answers 503 chat_disabled when the deployment has no model
provider configured. Issues, threads, channels and DMs are unaffected — only
the assistant is.
Locally, the api prefers the developer’s claude CLI over any API key. See
the suite’s LLM provider notes if you are running Space on your own machine.
503 members_disabled, or @ mentions never fire
Section titled “503 members_disabled, or @ mentions never fire”The member directory comes from identity, and Space needs a controller secret
to read it. Without it, GET /v1/members answers 503 members_disabled, the
assignee picker is empty, and mentions resolve to nobody.
Mentions fail quietly on purpose: a message posts even when the directory cannot be reached, because failing the whole message would make posting depend on identity being up.
A status change is refused
Section titled “A status change is refused”It should not be. Any status can move to any other in Space — done back to
todo included. A 422 invalid_status means the value itself is outside the
vocabulary (backlog, todo, in_progress, in_review, done,
cancelled), not that the move was illegal.
A team key is rejected
Section titled “A team key is rejected”Team keys are 2–6 characters, must start with a letter, and contain only
uppercase letters and digits: ENG, DES, PLAT2. Lowercase, spaces,
punctuation and single characters are refused with 422 invalid_key.
The key cannot be changed after the team exists, because it is baked into every issue key the team has minted.
The usage bar shows a number I have exceeded
Section titled “The usage bar shows a number I have exceeded”Space’s quotas are measured, not enforced — usage is recorded and displayed, and nothing is refused on the basis of it. A number over the shown allowance means exactly that: it was measured. See Plans and billing.