[BUG] git push and GitHub MCP push_files both fail with 403 — GitHub App is authorized (OAuth) but never installed, with no self-service way to install it
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
On a Claude Code on the web session with a repo connected via the session's repo picker, both push paths (the session's git proxy, and the GitHub MCP push_files tool) fail with 403. Root cause traced to: the "Claude" GitHub App shows up under GitHub's "Authorized GitHub Apps" tab (OAuth-only) but not under "Installed GitHub Apps", so it holds no repository permissions (e.g. Contents: write) — even though the repo was already connected to the Claude Code session and readable through it. There is no visible way from the GitHub UI or claude.ai settings to trigger the actual installation step (only a "Revoke" button is available on the OAuth authorization).
What Should Happen?
On a Claude Code on the web session with a repo connected via the session's repo picker, both push paths (the session's git proxy, and the GitHub MCP push_files tool) fail with 403. Root cause traced to: the "Claude" GitHub App shows up under GitHub's "Authorized GitHub Apps" tab (OAuth-only) but not under "Installed GitHub Apps", so it holds no repository permissions (e.g. Contents: write) — even though the repo was already connected to the Claude Code session and readable through it. There is no visible way from the GitHub UI or claude.ai settings to trigger the actual installation step (only a "Revoke" button is available on the OAuth authorization).
Error Messages/Logs
Steps to Reproduce
On a Claude Code on the web session with a repo connected via the session's repo picker, both push paths (the session's git proxy, and the GitHub MCP push_files tool) fail with 403. Root cause traced to: the "Claude" GitHub App shows up under GitHub's "Authorized GitHub Apps" tab (OAuth-only) but not under "Installed GitHub Apps", so it holds no repository permissions (e.g. Contents: write) — even though the repo was already connected to the Claude Code session and readable through it. There is no visible way from the GitHub UI or claude.ai settings to trigger the actual installation step (only a "Revoke" button is available on the OAuth authorization).
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.211
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗