Context
This is the deferred slice of #4665 (ADR-0030 Phase 2 — Per-agent App identities). It depends on §A: Ema registering 3 new GitHub Apps on github.com and installing them on OneStepAt4time/aegis. §A is currently blocked — last activity on §A was 2026-06-11 08:25 CEST (Ema's PM heartbeat noting the gate still open).
Scope (deferred until §A clears)
§A — GitHub App registration (human-only, blocks all)
- Ema registers 3 new GitHub Apps:
aegis-hermes, aegis-argus, aegis-hephaestus
- Each App installed on
OneStepAt4time/aegis repo
- Ema sends Hermes (via 1Password share only — NOT channel-paste per Themis's secure-transfer rule) the 3 PEMs + 3 App IDs + 3 Installation IDs
§B — PEM storage + permissions (Hermes does this when PEMs land)
- Drop PEMs at
~/.openclaw/workspace/infra/github-apps/aegis-{hermes,argus,hephaestus}.pem mode 600
- Verify parent dir is mode 700
- Confirm scripts reference the correct PEM via
PEM_FILE var (already staged in get-installation-token-{hermes,argus,hephaestus}.sh)
§D — Attribution confirm (Hermes, after §B)
- For each of 3 Apps: smoke-test
TOKEN=$(./get-installation-token-{hermes,argus,hephaestus}.sh) && GH_TOKEN=$TOKEN gh api user — verify the response shows the correct App identity
- Confirm no cross-attribution (e.g., hermes script returns hermes identity, not argus)
§E — Rotation + cron (Hermes, after §B+§D)
- 90d PEM rotation cron (PEMs are 75d old for legacy
aegis-gh-agent.pem; new PEMs need their own cadence)
- Token TTL behavior validation (verify 1h TTL, never persisted, stdout-only)
- Update
manage-aegis-apps.sh if needed for the new identities
Themis's deferred items (PEM-dependent, queued for next Themis window)
- ⏸️ Token TTL behavior validation end-to-end
- ⏸️ Concurrent mint safety under rate limit
Acceptance criteria
Sprint placement
Post-#4683. DEFERRED — blocks on Ema's §A. Sister-issue to the ship-now slice (#4731).
References
Context
This is the deferred slice of #4665 (ADR-0030 Phase 2 — Per-agent App identities). It depends on §A: Ema registering 3 new GitHub Apps on github.com and installing them on
OneStepAt4time/aegis. §A is currently blocked — last activity on §A was 2026-06-11 08:25 CEST (Ema's PM heartbeat noting the gate still open).Scope (deferred until §A clears)
§A — GitHub App registration (human-only, blocks all)
aegis-hermes,aegis-argus,aegis-hephaestusOneStepAt4time/aegisrepo§B — PEM storage + permissions (Hermes does this when PEMs land)
~/.openclaw/workspace/infra/github-apps/aegis-{hermes,argus,hephaestus}.pemmode 600PEM_FILEvar (already staged inget-installation-token-{hermes,argus,hephaestus}.sh)§D — Attribution confirm (Hermes, after §B)
TOKEN=$(./get-installation-token-{hermes,argus,hephaestus}.sh) && GH_TOKEN=$TOKEN gh api user— verify the response shows the correct App identity§E — Rotation + cron (Hermes, after §B+§D)
aegis-gh-agent.pem; new PEMs need their own cadence)manage-aegis-apps.shif needed for the new identitiesThemis's deferred items (PEM-dependent, queued for next Themis window)
Acceptance criteria
OneStepAt4time/aegisget-installation-token-{hermes,argus,hephaestus}.sh) haveAPP_ID+INSTALLATION_IDfilled ingh api usersmoke testdevelopupdated if reviewer App pattern from ci(devops): fix bot-can't-self-approve friction in PR approval flow #4725 path (a) is the chosen approachSprint placement
Post-#4683. DEFERRED — blocks on Ema's §A. Sister-issue to the ship-now slice (#4731).
References
chore(devops): #4665 ship-now slice)