Architecture · 17 of 19 · AI triage

AI triage: move Holmes's GitHub access behind Clearance

This is the first real consumer, and it already works: a broken canary produced a real diagnosis and a real fix PR. The change is small and removes a standing credential, which also takes pressure off a GitHub rate limit that four or more shared tokens have already hit.

AI triage: move Holmes's GitHub access behind Clearance Two-panel architecture comparing the current AI triage flow, where a degraded rollout renders a dispatch job that calls HolmesGPT, which holds a standing GitHub token and cluster RBAC and opens a fix pull request, with the proposed flow where Holmes calls Clearance with a service-account token and Clearance opens the pull request using a per-call installation token under a budget. TODAY · LIVE-VERIFIED 2026-08-13WITH CLEARANCE · PROPOSEDRENDERSPOST /API/CHATSTANDING PATRENDERSCHAT + TASK IDMCP · SA TOKENPR · INSTALL TOKENRollout degradedRolloutWatch XRDispatch Jobzero RBAC · one HTTP callHolmesGPTmodel key · PAT · cluster RBACGitHub PRe.g. idp#8, 2026-08-13Rollout degradedRolloutWatch XRDispatch JobSA token · aud clearanceHolmesGPTmodel key · cluster readClearanceprofile: triage · budgetsGitHub PRsigned · task id trailerLEGENDNewExists todayStanding credentialGoverned call

Principle honored

Never-persisted credentials, and one GitHub App per consumer as the durable fix for the shared rate-limit bucket (documented in the rate-limit investigation).

What changes

  • Holmes's GitHub MCP toolset is pointed at Clearance instead of holding github-mcp-token.
  • Clearance enforces a per-session GitHub API budget; the hot-loop that made ~16k calls an hour is the exact failure this bounds.
  • The dispatch Job stays exactly as it is: zero RBAC, one HTTP call.

Open questions

Unverified: whether Holmes can call an MCP server that authenticates with a projected service-account token, and forward a task id per request. Check Holmes's MCP config before committing to this design. Its cluster read RBAC stays a documented exception.

Hangar · Autopilot