Skip to content

docs: guide for granting headless environments read access to private docs - #2

Merged
RubenGlez merged 1 commit into
mainfrom
claude/agent-read-access-docs-k88x7c
Jul 18, 2026
Merged

RubenGlez merged 1 commit into
mainfrom
claude/agent-read-access-docs-k88x7c

Conversation

@RubenGlez

Copy link
Copy Markdown
Owner

A real session surfaced the gap: a remote coding agent working in a repo
that uses doctier could not read any private doc (by design), but there
was no documented path to deliberately grant such an environment access —
the pieces (grant, DOCTIER_SSH_KEY, unlock/cat) had to be
reverse-engineered from scattered README fragments, and the CI recipes
only cover the no-key paths.

  • Add docs/agents.md: generate a dedicated passphrase-less key, have an
    existing recipient grant it (the environment cannot self-serve — a key
    added after encryption cannot decrypt earlier blobs), provision the
    private half as a secret via DOCTIER_SSH_KEY, then unlock/cat; plus
    the revoke flow and an explicit trade-off callout (dedicated key per
    environment, never a personal one).
  • Link the guide from the README's "Joining a repo" section (including
    the "agent pasted me an AGE ENCRYPTED FILE block" moment) and from the
    CI paragraph.
  • Point the failure UX at the guide: keyless unlock/cat now explain
    in one line how access is granted and why self-adding a key won't
    work; the wrong-key paths (not a recipient) do the same.
  • Align unlock -h on $DOCTIER_SSH_KEY, the variable the README
    documents (both variables remain honored).

Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01MdC78SeCdRXuinYtMS4UEC

… docs

A real session surfaced the gap: a remote coding agent working in a repo
that uses doctier could not read any private doc (by design), but there
was no documented path to deliberately grant such an environment access —
the pieces (grant, DOCTIER_SSH_KEY, unlock/cat) had to be
reverse-engineered from scattered README fragments, and the CI recipes
only cover the no-key paths.

- Add docs/agents.md: generate a dedicated passphrase-less key, have an
  existing recipient grant it (the environment cannot self-serve — a key
  added after encryption cannot decrypt earlier blobs), provision the
  private half as a secret via DOCTIER_SSH_KEY, then unlock/cat; plus
  the revoke flow and an explicit trade-off callout (dedicated key per
  environment, never a personal one).
- Link the guide from the README's "Joining a repo" section (including
  the "agent pasted me an AGE ENCRYPTED FILE block" moment) and from the
  CI paragraph.
- Point the failure UX at the guide: keyless `unlock`/`cat` now explain
  in one line how access is granted and why self-adding a key won't
  work; the wrong-key paths (not a recipient) do the same.
- Align `unlock -h` on $DOCTIER_SSH_KEY, the variable the README
  documents (both variables remain honored).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MdC78SeCdRXuinYtMS4UEC
@RubenGlez
RubenGlez merged commit fb2921a into main Jul 18, 2026
4 checks passed
@RubenGlez
RubenGlez deleted the claude/agent-read-access-docs-k88x7c branch July 24, 2026 11:15
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.

2 participants