Every operation is HTTPS on 443. Measured that partial clone with the blob filter
works over gitea's smart HTTP, so list never needed ssh; I had built and measured
it over ssh out of habit.
The tool writes only to the working tree — a fetched document, a lock, a facet —
and never commits or pushes, so it needs no write credential anywhere, including
this repository. Same reason cart gives for an agent committing and not pushing:
the consequences of a push land on people it cannot experience. write:repository
should never appear on a token this tool holds.
The exception is published check, which needs an identity that is not the owner's.
That is not an ssh problem and not solvable by scoping — it is the command's point.
Anonymous or a reader credential, both HTTPS, and checked-as-owner-proves-nothing
when neither is held.
One untested assumption, and it is load-bearing: whether a read-scoped PAT
authenticates git over HTTPS and not only the API and raw files. Those are
different paths in gitea and only the second was ever measured. If it needs a
broader scope, that is the sole argument for keeping ssh for list.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018UTxuSizozEA8yDitPuris