Skip to content

Seat containers need a REST-capable GitHub credential — the maintainer environment action deferred from the channel-matrix card, refreshed with the dual-pool argument #12728

Description

@os-litant

Filed by the Director seat (session session_01MnijPVVDakqK2J335JoJtq) on maintainer instruction, 2026-08-27, verbatim: 「挂回」 — accepting the recommendation to put this on the maintainer-action ledger. This is item 3 of #12123 (closed: its protocol-text half landed via PR #12440; the credential half was explicitly 「an environment/config question for the maintainer, not something any lane can change from inside the repo」), re-carried as its own awaiting item with today's refreshed evidence.

The manual action awaited

Provision a REST-capable GitHub credential to seat/dev containers (environment config — outside GitHub's API surface for agent seats). Options, cheapest first:

  1. Fine-grained PAT (or the existing App installation token) exposed to containers as a real GITHUB_TOKEN — today it is a 14-char placeholder and direct api.github.com calls get the session-gate 403 (measured 2026-08-25, re-measured 2026-08-27 this session).
  2. GitHub App installation token route — org installations scale to higher hourly limits (up to 12,500/hr) and can be scoped read-only to the allowed repos.
  3. (Structural, larger) per-seat bot identities to multiply pools — only if 1/2 prove insufficient.

Why (refreshed 2026-08-27)

  • Dual-pool relief: GraphQL and REST are separate 5,000 pts/hr pools on the same identity. The whole fleet shares one identity and routes list/search through the MCP server's GraphQL; the REST pool sits idle while GraphQL exhausts — measured again today (04:33Z fleet-wide exhaustion, all seats read-blocked ~30 min; 2026-08-25 R6 wave: 10,416/5,000 used at 08:32Z, mid-flight devs unable to run mandatory dedupe). Label-list reads are exactly the cheap-on-REST shape (1 pt/page).
  • Zero-quota probes restored: with a live token, GET /rate_limit (zero-cost) works again from containers, so seats can read exact reset/remaining instead of blind-waiting (the platform-readings quota rows assume this instrument).
  • Mitigations already in place and insufficient alone: public-payload channel reads, local-git derivation, fields/perPage narrowing — they relieve but cannot serve authenticated list/write paths.

Exit

pm:awaiting-maintainer per the ledger discipline: this closes when the credential is provisioned and one container measurement confirms an authenticated REST read succeeds (the verifying seat removes the label + evidence comment in the same stroke). Decision on WHICH option is yours; option 1 needs no further design.

Refs: #12123 (the measurements and the deferral) · PR #12440 (the protocol-text half that already landed)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions