Skip to content

Operator closeout: GH_TOKEN probe, conditional bot-PAT rollout, 10-account stub sweep #3053

Description

@kyle-sexton

Final three operator-only steps of the cloud-env-fleet effort (everything else is done and merged: 12-target sync fleet converged, attest green at run 32294218834). All three need account-owner UI access, so this issue is portable to any machine.

Protocol: work the checklist here, then report results back in the driving Claude Code session — it records the probe verdict in the knowledge corpus and closes this issue. Autonomous sessions: needs-human — do not resolve.

Step 1 — GH_TOKEN live probe (~10 min, one account)

Decides whether Step 2 happens. Question: does a custom GH_TOKEN get cross-repo REST in a cloud session, or does the GitHub proxy still pin it?

  • Mint test PAT at https://github.com/settings/personal-access-tokens/new: name gh-token-probe-temp · resource owner melodic-software · expiry 7 days · Only select repositories → standards only · Repository permissions: Contents: Read-only (Metadata auto). Approve at https://github.com/organizations/melodic-software/settings/personal-access-token-requests if prompted.

  • In ONE claude.ai account: https://claude.ai/code → environment selector → create new environment gh-token-probe (do NOT touch Default) → Environment variables → GH_TOKEN = the test PAT → save. (No secrets store: any session in this env can read it — that is why it is throwaway.)

  • Start a session in that env on claude-code-plugins; first message:

    Run these and show raw output:
    gh api user -q .login
    gh api repos/melodic-software/standards -q .full_name
    gh api graphql -f query='{viewer{login}}'
    
  • Read the verdict:

    • Line 1 → your GitHub login = token reaches GitHub as itself; a proxy identity/error = proxy swallowed it.
    • Line 2 is the verdict (standards is NOT attached to the session): melodic-software/standards = cross-repo REST works → do Step 2. HTTP 403/blocked = proxy pins REST → skip Step 2 entirely, fleet keeps the proxy default.
    • Line 3 → expect 403 (documented pinned-GraphQL allowlist). If it succeeds, note it — that contradicts the docs and the corpus wants to know.
  • Cleanup (regardless of outcome): delete the gh-token-probe environment; revoke the PAT at https://github.com/settings/tokens?type=beta.

  • Record the three raw outputs below in a comment (or bring them back to the session).

Step 2 — bot-PAT rollout (ONLY if Step 1 line 2 succeeded, ~15 min)

  • Mint the real PAT at https://github.com/settings/personal-access-tokens/new: name claude-cloud-autonomy-bot · resource owner melodic-software · expiry 90 days (calendar the rotation) · Only select repositories → the 12 sync-fleet repos · Repository permissions: Contents: R/W · Pull requests: R/W · Issues: R/W (Metadata auto) · zero organization permissions (hard rule from the ratified decision).
  • In each autonomy account only: https://claude.ai/code → environment selector → edit Default → Environment variables → GH_TOKEN = the PAT → save. Non-autonomy accounts get NO variable (they stay on the proxy default).
  • Accepted trade-offs (already ratified, restated so nobody re-litigates mid-rollout): env values readable by any session in the env; permission prompts are governed by auto-mode/permissions, not the PAT.

Step 3 — stub sweep, all 10 accounts (~2 min each)

Per prompts/cloud-bootstrap-rollout.md Part 2 in this repo. Per account: https://claude.ai/code → environment selector → edit Default:

  • Setup script byte-identical to the canonical stub — when in doubt select-all and paste over (saving forces a cache rebuild, harmless, and picks up the latest standards component):

    #!/bin/bash
    curl -fsSL https://raw.githubusercontent.com/melodic-software/standards/main/components/cloud-environment/setup.sh \
      -o /tmp/melodic-env-setup.sh && bash /tmp/melodic-env-setup.sh
    exit 0
  • Network access: All (operator decision 2026-08-22, supersedes the Custom + 4-host recipe). Rationale: the allowlist is an exfiltration control whose Custom default already opens publish-capable package registries; the GitHub proxy, MCP connector traffic, and the Anthropic API bypass the access level at every setting; and a blocked host mid-session kills the session until an env edit + cache rebuild. "All" removes that failure class, including the dot.net special case (Melodic cloud environment verification results (2026-08-14) #2654 Blocker 1 is moot under All). If an account ever handles sensitive material, drop that one account back to Custom.

  • Environment variables: none — for every account (the Step-2 GH_TOKEN exception died with the probe verdict).

  • Verify: fresh session on claude-code-plugins in that account, FIRST message exactly /claude-config:audit. Resolves = plugins live at turn one = account green.

  • Failure triage, in order: ls /opt/melodic-env-setup.done missing → interrupted cache build (Melodic cloud environment verification results (2026-08-14) #2654 Blocker 2) → trivial script edit + save → rebuild → retry · cat /var/log/melodic-env-setup.log shows what the build did · "Unknown command" with populated ~/.claude/plugins/installed_plugins.json → known harness residual cloud sessions: slash commands for bootstrap-installed plugins unresolved at session start ("Unknown command") #2733 → resume the session (not a config error).

Account checklist:

  • account 1
  • account 2
  • account 3
  • account 4
  • account 5
  • account 6
  • account 7
  • account 8
  • account 9
  • account 10

Context

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions