Skip to content

ci: make ClawSweeper dispatch keyless (OIDC intake) - #78

Open
steipete wants to merge 1 commit into
mainfrom
ci/keyless-clawsweeper-dispatch
Open

steipete wants to merge 1 commit into
mainfrom
ci/keyless-clawsweeper-dispatch

Conversation

@steipete

Copy link
Copy Markdown
Contributor

The target dispatcher currently depends on App credentials or legacy delivery.

Replace the App-key dispatcher with OIDC-only Worker intake. No App key and no token mints remain in this workflow. The App webhook remains the independent route; the Worker owns eligibility and best-effort acknowledgements.

Canonical migration: openclaw/clawsweeper#2062

Validated with actionlint, zizmor --offline (zero template-injection findings), no secrets. references, and independent autoreview.

Only .github/workflows/clawsweeper-dispatch.yml changes.

Replace the App-key dispatcher with OIDC-only Worker intake. No App key and no token mints remain in this workflow. The App webhook remains the independent route; the Worker owns eligibility and best-effort acknowledgements.

Canonical migration: openclaw/clawsweeper#2062

Validated with actionlint, zizmor --offline (zero template-injection findings), no secrets. references, and independent autoreview.
@clawsweeper

clawsweeper Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T02:05:35.122283Z 9b41778 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9b417783bd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

env:
GH_TOKEN: ${{ steps.token.outputs.token }}
TARGET_REPO: ${{ github.repository }}
TARGET_BRANCH: ${{ github.event.repository.default_branch }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Send the PR base branch in the OIDC payload

When a pull request targets a non-default branch, its pull_request_target OIDC identity uses that base branch, while this payload always claims the repository default branch (GitHub documents that pull_request_target uses the base ref). The intake verifier therefore rejects the request, and the new 4xx path exits successfully without the former repository_dispatch fallback, leaving this workflow unable to deliver such PR events. Set TARGET_BRANCH from github.base_ref/github.event.pull_request.base.ref for PR events and retain the default for issue events.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added clawsweeper:intake:feature Preliminary submission classification; full source review pending. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed clawsweeper:intake:feature Preliminary submission classification; full source review pending. labels Oct 19, 2026
@clawsweeper

clawsweeper Bot commented Oct 19, 2026

Copy link
Copy Markdown

Codex review: blocked before merge.

What this changes

This PR replaces target-held App credentials and relay dispatch with GitHub Actions OIDC intake and Worker-owned acknowledgements.

Example: A collaborator posts @clawsweeper stop on openclaw/rfcs issue 57.

  • Before: The target workflow mints App tokens to acknowledge and relay the command.
  • After: The workflow sends comment locators through OIDC, and the Worker retrieves live authority before routing the command.

Review scores

Measure Result What it means
Overall readiness 🦐 gold shrimp (3/6) A useful canonical migration with no actionable code finding, controlled authority evidence, and a target rollout prerequisite still to verify.
Proof confidence 🦐 gold shrimp (3/6) ✨ media proof bonus Sufficient (linked_artifact): For this maintainer-authored authority change, the linked migration supplies production-path Worker, queue, and router evidence covering allowed effects, forbidden identities, duplicate delivery, and permission revocation before delayed execution and retry; the authority fixtures match their recorded hashes, while the historical failure-path trace predates later error-handling changes.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Product

Kind: Refactor · Worth it: Yes · Fix scope: Complete
User problem: Target runners hold a central App private key and mint write-capable credentials to deliver maintenance events.
Reason: The maintainer-authored direction removes target credential exposure using the approved central intake contract.

Merge readiness

⛔ Blocked before merge - 1 item remains

Keep this PR open: it applies the approved keyless dispatcher migration, which remains absent from this repository’s main branch; no introduced code defect was found.

Priority: P2
Reviewed head: 9b417783bd475127fcdd9b01297056dbb92405b1

Before merge

  • Resolve merge risk - Before merging, verify signed Issues, Pull requests, and Issue comments deliveries for the rfcs installation; a missing subscription would leave affected events without delivery when OIDC refuses them.

Findings

None.

Tests

  • Missing end-to-end proof: The linked authority proof uses controlled GitHub/JWKS responses; no keyless run from this target or failing-base/passing-head delivery run is shown.
Agent review details

How this fits together

GitHub issue, PR, and command events enter the target workflow, which forwards them to the central Worker and its existing review queue or command router.

flowchart TD
  A[GitHub events] --> B[Target dispatcher]
  B --> C[OIDC Worker intake]
  A --> D[Signed App webhook]
  C --> E[Live GitHub authority]
  E --> F[Shared queue and router]
  D --> F
  F --> G[Reviews and acknowledgements]
Loading

Technical review

Best possible solution:

Adopt the canonical keyless workflow after verifying this target’s required App event subscriptions.

Do we have a high-confidence way to reproduce the issue?

Current-main source passes the central App private key to token-minting actions for target acknowledgements and relay delivery; no target code was executed.

Is this the best way to solve the issue?

The patch follows the merged canonical migration and reuses existing Worker authorization, acknowledgement, queue, and router owners.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 967d9aac7472.

Merge-risk options

Maintainer options:

  1. Verify target subscriptions (recommended)
    Confirm signed deliveries for all three required event subscriptions before enabling this migration.
  2. Defer target migration
    Retain the existing dispatcher until the target installation’s delivery coverage is confirmed.

Provenance checked

  • App credentials, relay delivery, and target acknowledgements changes intended behavior with a stated reason (593e6e4: Provide target event forwarding and optional command acknowledgements through App tokens; the original commit states no more specific credential-placement rationale.)
  • Concurrency and comment prefilter changes intended behavior with a stated reason (593e6e4: Group item activity, supersede edits, and filter command comments; the adopted canonical contract now isolates comment identities and leaves authoritative classification to the Worker.)

Testing

Proof path: in-process harness.

Security

None.

Evidence

What I checked:

Labels

Label changes:

  • add P2: This is a bounded credential-exposure and maintenance-automation improvement without evidence of an active emergency.
  • add merge-risk: 🚨 automation: Removing relay delivery makes rejected OIDC events depend on the App webhook; that tradeoff is accepted, but this target’s required subscriptions still need verification.
  • add proof: sufficient: Contributor real behavior proof is sufficient.
  • add rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.

Label justifications:

  • P2: This is a bounded credential-exposure and maintenance-automation improvement without evidence of an active emergency.
  • merge-risk: 🚨 automation: Removing relay delivery makes rejected OIDC events depend on the App webhook; that tradeoff is accepted, but this target’s required subscriptions still need verification.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp and patch quality is 🐚 platinum hermit.
  • proof: sufficient: Contributor real behavior proof is sufficient.

Rating scale

6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior.

Workflow

ClawSweeper edits this one comment on every review. Comment @clawsweeper re-review for a fresh review only. Repair and merge execution lanes are retired.

Reviewed October 18, 2026, 10:15 PM ET / October 19, 2026, 02:15 UTC.

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

Labels

merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant