Skip to content

Give the Cloudflare grant a CLI surface, because L1 shipped it with none - #175

Open
wms2537 wants to merge 1 commit into
mainfrom
reach-the-grant-from-the-terminal
Open

Give the Cloudflare grant a CLI surface, because L1 shipped it with none#175
wms2537 wants to merge 1 commit into
mainfrom
reach-the-grant-from-the-terminal

Conversation

@wms2537

@wms2537 wms2537 commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

#162 L1 shipped five routes and two doctor findings and no way to reach them — no screen, no verb.

So the one step in the ceremony that needs a human — pasting a client id and a secret Cloudflare shows once — had no surface but raw curl with a hand-extracted session cookie. Found by trying to actually do it.

mailda provider                    # state, or the printed ceremony
mailda provider --client-id <id>   # register; secret on stdin
mailda provider --scopes a,b       # begin a consent, print the URL

Reuses sessionCookie, which already existed for doctor.

The secret is read from stdin, never an argument. An argv is in ps and in the shell's history file, and Cloudflare shows the secret exactly once — so the one value that cannot be re-read is the one that must not be left lying in a history file.

typecheck, lint, 490 node tests.

🤖 Generated with Claude Code

https://claude.ai/code/session_019nasxsGa8Zb1kdvUu7iUZe

#162 L1 shipped five routes and two `doctor` findings and **no way to reach them** — no screen, no verb. So
the one step in the whole ceremony that needs a human, pasting a client id and a secret Cloudflare shows once,
had no surface but raw curl with a hand-extracted session cookie. Found by trying to do it.

`mailda provider` reads the state and prints the ceremony; `--client-id` registers; `--scopes` begins a
consent and prints the URL. Reuses `sessionCookie`, which already existed for `doctor`.

**The secret is read from stdin, never an argument.** An argv is in `ps` and in the shell's history file, and
Cloudflare shows the secret exactly once — so the one value that cannot be re-read is the one that must not be
left lying in a history file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019nasxsGa8Zb1kdvUu7iUZe
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