docs(m160): login saves a durable credential, one per computer - #173
Merged
Conversation
Records the M160_002 and M136_001 milestone shipped in agentsfleet#600. Changelog: one `<Update>` for Aug 14, 2026 — the durable `afc_` credential, the removal of `agentsfleet login --token` and its piped-input path, logout no longer ending a dashboard session, the deployment a credential records, and the boot refusal of `OIDC_PROVIDER=custom`. Pages corrected against source on `main`, not against prose: - `cli/configuration.mdx` — login takes no token on the command line and reads none from piped input. The API Uniform Resource Locator (URL) order is `--api`, `AGENTSFLEET_API_URL`, the server recorded at login, then the built-in URL; the `.env.local` rung it claimed is read nowhere in the client. Adds the `DEPLOYMENT_UNKNOWN` refusal. - `cli/agentsfleet.mdx` — login and logout rows restated. - `api-reference/introduction.mdx` — login saves a durable credential, not a short-lived JSON Web Token (JWT). - `docs.json` — registers the three `/v1/cli-credentials` operations, which the OpenAPI drift check wanted. Catch-up sweep, found while verifying the above: - `api-reference/error-codes.mdx` regenerated from the error registry (`make gen-error-codes`). Beyond `UZ-AUTH-023/024/025` this pulls in drift the page never received: `UZ-FLEETKEY-001` dropped, `UZ-APIKEY-001` pointed at `POST /v1/api-keys`, and the `UZ-AGT-015`, `UZ-EXEC-017`, `UZ-REPAIR-013`, and `UZ-REPAIR-014` rows added. - `api-reference/scopes.mdx` — `fleetkey:read` and `fleetkey:write` do not exist in `auth/scopes.zig`; `approval:read` is included by `approval:resolve`. - `cli/agentsfleet.mdx` — the three `agentsfleet fleet-key` commands have no command, no route, and no OpenAPI path on `main`. `product_version` stays pinned at 0.25.0 across every page, which is what `scripts/check-documentation.py` enforces; `verified` moves to 2026-08-14 on the five pages checked against source today. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…edential-changelog # Conflicts: # changelog.mdx
`make gen-error-codes` in `agentsfleet` stamps that repository's `VERSION` into the generated front matter, so the generated `error-codes.mdx` has carried `0.26.2` since the release while `scripts/check-documentation.py` still rejected anything but `0.25.0`. Every regeneration failed this repository's own checker. Moves the pin, all 25 published pages, and the checker's own `VALID_PAGE` fixture together — the three places that spell the version. `verified` is untouched: it records the last source check per page, and only the five pages read against source on Aug 14, 2026 carry that date. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Indy's call, Aug 14, 2026: a user is never told to check with the `/v1/cli-credentials` API, and the list operation is gone from the product — `GET /v1/cli-credentials` had no caller and offered a stolen credential free reconnaissance (agentsfleet#602 removes it). - `error-codes.mdx` regenerated: `UZ-AUTH-024` states the refusal and points nowhere, since there is deliberately no way to enumerate credentials. - `changelog.mdx`: the entry describes what login and logout do and names no endpoint. - `docs.json`: the `GET /v1/cli-credentials` operation row is removed; mint and revoke stay, since the OpenAPI reference still documents what the product itself calls. Committed with OPENAPI_URL pointed at the agentsfleet#602 branch spec — the drift check against `main` stays red until that PR merges, and is clean against the spec this change documents. Merge order: agentsfleet#602 first, then this. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Every hint now states what failed, what is expected, and how to correct it, in short plain sentences — no internal table names, no milestone markers, no cross-references to other codes, no design lectures. 167 codes, no hint over 200 characters. Generated by `make gen-error-codes` from agentsfleet's registry after its plain-language sweep; that change rides the same agentsfleet PR this branch already depends on, so the merge order is unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intent
Records M160_002 and M136_001, merged as agentsfleet#600 (
92589429b). Login used to save the browser session token it recovered, valid for about a minute; it now saves a durableafc_credential minted throughPOST /v1/cli-credentials.Every claim below was read from source on
agentsfleetmain, not from the specification or the Pull Request (PR) body.Changelog
One
<Update>for Aug 14, 2026, tagged Breaking / Security / What's new. Three breaking facts an operator must act on:agentsfleet login --tokenis gone along with piped input,agentsfleet logoutno longer ends a dashboard session, andOIDC_PROVIDER=customis refused at boot.Pages corrected
cli/configuration.mdxlogincommand accepts--token, piped input, or browser approval"; the Uniform Resource Locator (URL) order named a.env.localrungcli/src/cli.tsresolveGlobalApiUrl,cli/src/program/cli-tree.tscli/agentsfleet.mdxcli/src/commands/auth-logout.tsapi-reference/introduction.mdxcli/src/commands/login-exchange.tsdocs.json/v1/cli-credentialsoperations were unregisteredpublic/openapi/paths/cli-credentials.yamlcli/configuration.mdxgains theDEPLOYMENT_UNKNOWNrefusal: a saved credential recording no server, dialed at a server nobody named, exits1before anything is sent.logoutanddoctorstay reachable.Catch-up sweep
Regenerating
api-reference/error-codes.mdxwithmake gen-error-codespulled in more than this milestone's three rows, because the page had not been regenerated since 0.25.0:UZ-FLEETKEY-001; addedUZ-AGT-015,UZ-EXEC-017,UZ-REPAIR-013,UZ-REPAIR-014UZ-APIKEY-001now points atPOST /v1/api-keysinstead of the retiredPOST /v1/workspaces/{ws}/fleet-keysUZ-GRANT-001and theUZ-REPAIR-010/011/012rows reworded to their current registry textThe retired fleet-key surface follows from the same read:
fleetkey:readandfleetkey:writeare absent fromsrc/agentsfleetd/auth/scopes.zig, andagentsfleet fleet-key create|list|deletehave no command, no route, and no OpenAPI path. Both were documented.approval:readis included byapproval:resolveperscopes.zig, which the table said wasNone.Verification
make lint—Documentation check passed,✓ openapi drift check clean, link check clean.gitleaksclean.Session notes
product_versionstays 0.25.0.scripts/check-documentation.pyhardcodesEXPECTED_VERSION = "0.25.0"and rejects anything else, whilemake gen-error-codesstamps theagentsfleetrepository version (0.26.2) into the generated front matter. Every regeneration will now fail this repository's own checker until the pin moves. Bumping it is a repository-wide decision across 25 pages, so it is left for Indy rather than folded in here.verifiedmoves to 2026-08-14 on the five pages actually checked.UZ-AUTH-024told operators to runagentsfleet cli-credentials list, which is not a command in the client — only the Hypertext Transfer Protocol (HTTP) path exists. Its detail also brokeDOC-02(28-word sentence) andDOC-03. The wording fix belongs insrc/agentsfleetd/errors/error_entries.zig; it is held as a patch and needs its own small PR againstagentsfleetmain, since #600 is already merged.schedule:read,schedule:write, andstream:readexist inscopes.zigand are still absent fromapi-reference/scopes.mdx. Enumerating them wants its own verification pass over which routes each gates.agentsfleet#601(M164) carries an Aug 13 changelog entry onchore/m164-delete-the-free-trial-changelog. Whichever merges second takes a small conflict at the top ofchangelog.mdx.🤖 Generated with Claude Code
Greptile Summary
The PR updates the documentation for durable per-computer CLI credentials and aligns the documented product version with 0.26.2.
afc_credentials, revised logout semantics, server affinity, andDEPLOYMENT_UNKNOWN.Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart LR A[Browser login] --> B[Short-lived session] B --> C[POST /v1/cli-credentials] C --> D[Durable afc_ credential] D --> E[Saved with issuing server] E --> F[Later CLI commands] F --> G[Logout or newer login revokes credential]Reviews (4): Last reviewed commit: "docs: regenerate error-codes from the pl..." | Re-trigger Greptile
Context used (4)