-
Notifications
You must be signed in to change notification settings - Fork 554
Restrict @claude bot to mcp org only, fix fork behavior #819
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Add a maintainer check to the Claude workflow to ensure only registry maintainers can trigger @claude. This enables the bot to work on external fork PRs when triggered by maintainers, while preventing unauthorized usage. Also adds maintainer onboarding documentation covering the full checklist for adding/removing maintainers. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Replace the hardcoded maintainer list with a dynamic GitHub API check for modelcontextprotocol org membership. This allows any org member to trigger @claude without needing to update the workflow file. Requires adding an ORG_MEMBERSHIP_TOKEN secret with read:org scope. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
Parse the users.ts file from modelcontextprotocol/access to get the list of org members. This avoids needing a PAT with read:org scope. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
- Remove id-token: write (not needed for API key auth, causes issues on forks) - Add write permissions for contents/pull-requests/issues - Detect fork PRs and checkout via refs/pull/N/head instead of branch name - This allows @claude to work on external fork PRs when triggered by org members 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
The claude-code-action uses its own GitHub App token for write operations, so the workflow token only needs read permissions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
|
tldr: username matching logic seems safe, although looks spooky I was initially concerned about the username matching logic. If there's an approved user called |
This reverts commit 3704533.
Written by Claude Code, reviewed by me.
Summary
Fixes
@claudeto work on external fork PRs by:refs/pull/N/headBackground
The
@claudeGitHub app was failing on external forks (example) because the action tried to fetch branches by name, which doesn't work for forks.Changes
Org membership check
modelcontextprotocol/accessrepo'susers.ts@claude(prevents strangers from using it)github.triggering_actorso the person commenting must be an org memberFork PR checkout fix
refs/pull/{number}/headto checkout fork code (instead of branch name)How it works
@claudeon a fork PRmodelcontextprotocol/accessmember listrefs/pull/N/head🤖 Generated with Claude Code