Claude GitHub App stuck as "Authorized OAuth App" — never completes installation, all repo writes fail with 403
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?
When using Claude Code on the web (claude.ai/code) with a repository attached to a session, every write operation to GitHub fails with a 403 permission error — this includes git push (via the session's local git proxy), direct file writes via the GitHub integration, and pull request creation.
Investigating further: on github.com/settings/applications, "Claude" shows up under Authorized OAuth Apps. However, it never appears under Installed GitHub Apps (github.com/settings/installations). This suggests the GitHub App installation step (which is what actually grants repository-level permissions like Contents and Pull requests) never completes — only the OAuth identity authorization does.
I tried revoking the authorization at github.com/settings/connections/applications/<app-id> and reconnecting through claude.ai/code, hoping it would retrigger the full install flow. The result was identical: still listed only under "Authorized OAuth Apps," never under "Installed GitHub Apps."
My account is a personal GitHub account (not an organization), so the Team/Enterprise admin-settings page for managing GitHub App installations doesn't apply to me.
What Should Happen?
Connecting a repository to a Claude Code on the web session should complete a full GitHub App installation on the user's account (or the relevant repository), granting the permissions the integration actually needs (at minimum: Contents: read/write, Pull requests: read/write). After that, git push, file writes, and PR creation initiated by Claude should succeed against that repository.
Error Messages/Logs
git push (through the session's local git proxy):
fatal: unable to access 'http://127.0.0.1:41729/git/<owner>/<repo>/': The requested URL returned error: 403
Direct file write via GitHub integration:
failed to create/update file: PUT https://api.github.com/repos/<owner>/<repo>/contents/README.md: 403 Resource not accessible by integration []
Pull request creation:
failed to create pull request: POST https://api.github.com/repos/<owner>/<repo>/pulls: 403 Resource not accessible by integration []
Separately, at one point the session's GitHub token expired mid-session, surfacing as:
fatal: could not read Password for 'http://local_proxy@127.0.0.1:41729': terminal prompts disabled
MCP server "github" requires re-authorization (token expired)
(This resolved after reconnecting, but the underlying 403/"not installed" issue did not.)
Steps to Reproduce
- Create (or use) an empty personal (non-organization) GitHub repository.
- Start a Claude Code on the web session with that repository attached as a source.
- Ask Claude to commit and push a change to the repository, or to open a pull request.
- Observe the write fails with "403 Resource not accessible by integration" (file writes / PRs) or plain "403" (git push through the local proxy).
- Check github.com/settings/applications — "Claude" is listed under Authorized OAuth Apps.
- Check github.com/settings/installations — "Claude" does NOT appear there.
- Revoke the authorization (github.com/settings/connections/applications/<id>) and reconnect the repo via claude.ai/code.
- Repeat steps 5–6 — the state is unchanged: still authorized, never installed.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude Code on the web (claude.ai/code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
As a workaround, I exported the local commit as a git bundle and pushed it manually from my own machine using my personal GitHub credentials (which do have push access to the repo) — that succeeded without issue, confirming this is specific to the Claude GitHub App's own installation/permission state, not a problem with the repository or my account's general GitHub permissions.
Repository involved: Rinntelligence/Finnhelper (public).
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗