Skip to content

docs: say where the API key goes before the first request fails - #30

Merged
agentforce314 merged 1 commit into
mainfrom
credentials-onboarding
Aug 19, 2026
Merged

docs: say where the API key goes before the first request fails#30
agentforce314 merged 1 commit into
mainfrom
credentials-onboarding

Conversation

@agentforce314

Copy link
Copy Markdown
Owner

Install ends at dsh --profile dsh-cctui, and the next thing a new user meets is
MISSING_CREDENTIAL — with nothing in this README saying where a key belongs. The harness
resolves one per request through dsh-credentials-local, so the answer was only ever in that
package's own docs, a dependency-of-a-dependency away from anyone reading this one.

Adds an API key subsection under Install, recording the managed store
($DSH_HOME/.credentials.yaml) as the recommended home plus the three facts that are easy to get
wrong on the way there:

  • the 0600 mode is enforced, not advisory — the provider refuses a document carrying any group
    or other permission bit and fails at boot
  • the document is watched, so a key stored mid-session takes effect on the next request
  • the key never belongs in cordis.patch.yml — adapter config carries apiKeyEnv, a reference,
    not a secret

Also states the layer precedence (launching environment > store > <cwd>/.env > ~/.dsh/.env),
that one key covers web_search too, and what 0600 does not buy: it stops other OS users, not
the model, whose bash and filesystem tools run as the same user.

Every claim was checked against the booted profile (dsh --profile dsh-cctui --dump-config
mounts dsh-credentials-local and dsh-llm-deepseek with the default
apiKeyEnv: DEEPSEEK_API_KEY) and against those packages' READMEs, and the documented path was
walked end to end on a real key.

Docs only, so no version bump — matching 69ae70d, 52c365c, and faa956d.

🤖 Generated with Claude Code

Install ends at `dsh --profile dsh-cctui`, and the next thing a new user
meets is `MISSING_CREDENTIAL` — with nothing in this README saying where a
key belongs. The harness resolves one per request through
`dsh-credentials-local`, so the answer was only ever in that package's own
docs, a dependency-of-a-dependency away from anyone reading this one.

Records the managed store as the recommended home, and the three facts
that are easy to get wrong on the way there: the `0600` mode is enforced
rather than advisory (the provider refuses a document with any group or
other bit and fails at boot), the document is watched so a key stored
mid-session needs no restart, and the key never belongs in
`cordis.patch.yml` — adapter config carries `apiKeyEnv`, a reference, not
a secret.

Also states the layer precedence, that one key covers `web_search` too,
and what `0600` does not buy: it stops other OS users, not the model,
whose bash and filesystem tools run as the same user.

Docs only, so no version bump — matching 69ae70d, 52c365c, and faa956d.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@agentforce314
agentforce314 merged commit a19f0fa into main Aug 19, 2026
1 check passed
@agentforce314
agentforce314 deleted the credentials-onboarding branch August 19, 2026 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant