fabro/docs/public/integrations
Bryan Helmkamp 370a6c96d5
Give the checkout its GitHub credentials through the driver's store
The GitHub App token reached the agent's git commands through the origin
URL: after the clone fabro ran `git remote set-url origin` with the
token embedded, then tracked which generation the URL carried, held an
embed lease across every push so a refresh could not rewrite the URL
mid-operation, re-embedded on the first auth-shaped push failure in
case the agent had rewritten origin, and redacted the URL out of every
log line and output tail. The token showed in `git remote -v` and
`.git/config`.

The driver now installs ambient credentials for a checkout: one
credential-store line beside the checkout and a `credential.helper`
entry pointing at it, with the remote URL untouched. Fabro's part is
`credentials.rs`: the token source, one mint for the clone, one resolve
per push operation, and the facet call. The clone carries the token per
call and installs it afterwards; the ACP refresh tick rewrites the store
instead of the URL; fabro's own pushes pin one resolved token for the
whole operation and pass it per call, so nothing is ever re-embedded and
a retry after replication lag presents the same token by construction.

Gone with the URL: `push_credentials.rs`, `redact.rs`, the lease and
drift repair in `git_push`, `RefreshOutcome`, and the `credential_action`
and `refresh_error` fields on push attempt events. Stored events that
carry those keys still read. A failed store install after the clone now
fails setup, where a failed `set-url` used to be logged and repaired by
the first push. The one remaining caller of the URL redactor, the
server's repository probe, uses `DisplaySafeUrl::redact_in`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 10:02:01 -06:00
..
bedrock.mdx Document the catalog overlay without the metadata.fabro namespace 2026-09-09 23:26:48 -06:00
brave-search.mdx refactor(search): select backend from available credentials 2026-08-21 20:09:52 -04:00
daytona.mdx Allow Daytona snapshots from Docker images 2026-08-27 15:02:50 -04:00
deepseek.mdx feat(model): separate tool and reasoning tests 2026-08-25 13:36:51 -04:00
fireworks.mdx Document the catalog overlay without the metadata.fabro namespace 2026-09-09 23:26:48 -06:00
github.mdx Give the checkout its GitHub credentials through the driver's store 2026-09-11 10:02:01 -06:00
litellm.mdx Document the catalog overlay without the metadata.fabro namespace 2026-09-09 23:26:48 -06:00
modal.mdx Document the catalog overlay without the metadata.fabro namespace 2026-09-09 23:26:48 -06:00
openrouter.mdx Document the catalog overlay without the metadata.fabro namespace 2026-09-09 23:26:48 -06:00
poolside.mdx Document the catalog overlay without the metadata.fabro namespace 2026-09-09 23:26:48 -06:00
slack.mdx refactor(config): stop resolving {{ env.* }} in interpolated config 2026-07-27 21:09:35 -04:00
venice-search.mdx refactor(search): select backend from available credentials 2026-08-21 20:09:52 -04:00
venice.mdx feat(model): separate tool and reasoning tests 2026-08-25 13:36:51 -04:00