Hi guys, today needed to to the setup (still not done?), so help yourself:
(edited by codex after me swearing for about an hour
)
Over the years, I accumulated hundreds of development repositories across my personal GitHub account and the GitHub organizations for my two companies. I needed one inventory that could tell me what existed, which projects were still active, how they were related, and which person or company they belonged to.
That inventory required ChatGPT and Codex to read repositories from all three places at the same time. I expected to connect GitHub once, grant access, and begin the analysis, but this is where I hit a wall.
ChatGPT showed only one GitHub connection. Reconnecting it did not offer a clear way to add another organization, and GitHub showed a different installation number for every account or organization. The available documentation explained individual parts of the system, but I could not find a simple end-to-end guide for connecting one personal account and multiple organizations and then making the same access work inside the Codex desktop app.
I eventually reached a strange halfway point. ChatGPT could find private repositories from my personal account and both companies, but every GitHub tool call in Codex failed with MCP error -32603: Internal error.
The fix was to exit the Codex desktop app through File > Exit, reopen it, and retry. Closing the window was not sufficient because the desktop process remained active.
This is the guide I wish I had when I started. It explains the moving parts in plain language, provides the exact installation link, and shows how to recover without repeatedly disconnecting or uninstalling a GitHub setup that is already correct.
The Five Pieces in Plain Language
Several different things are presented as if they were one GitHub connection. Understanding the difference between them makes the setup much easier.
Your GitHub Login Is Your Identity
Your GitHub login answers one question: who are you? ChatGPT connects to this user identity once.
The same GitHub user can own personal repositories and can also belong to one or more organizations. You do not need a separate ChatGPT connection for every organization when the same GitHub user already has access to them.
A Repository Owner Is Where the Code Lives
Every repository belongs either to a person or to an organization. GitHub documentation calls that person or organization a resource owner.
In my case, there were three repository owners: my personal account, Organization A, and Organization B. Think of them as three separate buildings that contain repositories.
An Installation Is a Permission Slip
The ChatGPT Codex Connector GitHub App needs a separate installation for each repository owner. Think of each installation as a permission slip that lets the connector enter one building.
One installation covers the personal account. A second installation covers Organization A. A third installation covers Organization B.
GitHub gives every installation a different numeric ID. Those different numbers are expected; they are receipts for separate permission grants, not separate ChatGPT connections.
Synchronization Helps ChatGPT Find Repositories
After GitHub grants access, ChatGPT builds a synchronized list of repositories it can search efficiently. This step can take several minutes and is separate from the GitHub permission itself.
Seeing a repository in the ChatGPT synchronized repository selector is a useful confirmation that the GitHub side of the setup is working.
Codex Uses a Running Connector Session
The Codex desktop app uses the same connected GitHub data through its own running connector session. If Codex was already open while installations or synchronization changed, its running session may not refresh correctly.
This is why a complete File > Exit matters. It stops the old desktop process and creates a fresh connector session when Codex reopens.
The complete setup looks like this:
One GitHub user login
-> One ChatGPT GitHub connection
The same ChatGPT Codex Connector app
-> Installation for the personal account
-> Installation for Organization A
-> Installation for Organization B
ChatGPT
-> Synchronizes repositories from all three installations
Codex desktop
-> Reads the refreshed connector state after File > Exit and restart
Short Version
- Make the first GitHub connection through the ChatGPT web app and authorize the personal account.
- Keep the same browser session open and use the direct GitHub installation URL once for each organization.
- Install
ChatGPT Codex Connectorseparately on every repository owner that should be accessible. - Expect a different GitHub App installation ID for the personal account and every organization.
- Wait at least five minutes for repositories to appear in the ChatGPT synchronized repository selector.
- Exit Codex through
File > Exitafter adding or changing GitHub installations. - Reopen Codex and test each installed account with a small repository query.
Configure GitHub in ChatGPT
Make the First Connection Through ChatGPT
I made the first connection through the ChatGPT web app and used my personal GitHub account. In my case, this established the one GitHub identity connected to ChatGPT and created the connector installation for my personal repositories.
- Open the ChatGPT web app in your browser.
- Open your profile menu.
- Select
Settings > Plugins > Browse plugins. - Find GitHub and select the option to add a connection.
- Sign in with the GitHub user that can access every organization you need.
- Select the personal account and grant access to the required personal repositories.
Some ChatGPT versions may label this area Apps instead of Plugins. The important part is to find the GitHub integration in ChatGPT settings and make the first connection there.
ChatGPT supports one connected GitHub user identity at a time. Reconnecting the same user updates that connection; it does not create another independent connection for an organization.
Use the Exact GitHub Installation Link for Organizations
After the personal connection was working, I kept the same browser session open and used the following URL to add the organizations. I opened it once for Organization A, completed that installation, opened it again, and then completed the installation for Organization B.
Use this exact URL to create each additional installation:
https://github.com/apps/chatgpt-codex-connector/installations/new
- Remain signed in to ChatGPT and GitHub in the same browser.
- Open the exact new ChatGPT Codex Connector installation URL.
- Select the organization where the repositories live.
- Select
All repositoriesor choose only the repositories ChatGPT should access. - Review the requested permissions.
- Select Install or Request, depending on your organization role.
- Open the same URL again and repeat the process for the next organization.
Do not use ChatGPT’s Disconnect and Connect buttons to add an organization. That flow reconnects the same GitHub identity, while the direct URL creates another installation for the selected organization.
Review the Installations
Review the personal installation at GitHub personal application installations.
An organization owner can normally install the app directly. A member without the required authority must send the request to an organization owner for approval.
Review an organization installation at the following URL, replacing ORGANIZATION with the organization login:
https://github.com/organizations/ORGANIZATION/settings/installations
Keep the personal installation when adding organizations. The finished setup should contain one personal installation and one additional installation for each organization.
Verify ChatGPT Synchronization
Open the GitHub app settings in ChatGPT (web) and inspect the synchronized repository selector. Search for at least one known private repository from the personal account and from every organization.
OpenAI documents an approximate five-minute delay before repositories become available in ChatGPT. GitHub search indexing can require an additional five to ten minutes in some cases.
The synchronized repository selection is separate from GitHub repository authorization. A repository can be authorized on GitHub without being selected for synchronization in ChatGPT. (anyone has a link to the doc for that?)
Refresh the Codex Desktop App
Exit Codex after the ChatGPT repository selector shows the expected repositories.
- Open the Codex desktop app menu.
- Select
File > Exit. - Confirm that the Codex and ChatGPT desktop processes have exited (or just wait a few seconds).
- Reopen the Codex desktop app.
- Reopen the existing project or conversation.
- Start a new conversation if the existing conversation retains stale connector state.
Closing the application window may leave background processes running. Use File > Exit for this recovery procedure.
Test the Connector in Codex
Start with small requests that test authorization and installation discovery without retrieving a large repository inventory.
Use GitHub to list my installed accounts.
Then test the personal account and each organization separately:
Use GitHub to list five repositories from PERSONAL-ACCOUNT.
Use GitHub to list five repositories from ORGANIZATION-A.
Use GitHub to list five repositories from ORGANIZATION-B.
Only request the complete repository list or begin repository analysis after these small tests succeed.
Recognize the Stale Connector Failure
The following combination strongly suggests a Codex connector session problem rather than missing GitHub permissions:
- ChatGPT can find private repositories from the personal account and every organization.
- GitHub shows a separate active installation for the personal account and every organization.
- Codex exposes GitHub tools but every tool returns
MCP error -32603: Internal error. - Listing installed accounts fails before repository data is requested.
- A request limited to five or ten repositories fails immediately.
Error -32603 is the JSON-RPC generic internal error code. It does not identify a timeout or a specific GitHub permission failure.
In my case, the account-list request and small repository-list requests failed within seconds. Increasing the timeout or reducing the repository count could not help because the connector failed before it began processing repository results.
Verified Recovery
The following recovery worked in this case:
- Confirm that ChatGPT can see repositories from every installation.
- Select
File > Exitin Codex. - Reopen Codex.
- Retry the installed-account query.
- Query a small repository sample from every account.
- Retrieve the complete repository inventory page by page only after the samples succeed.
After the restart, Codex returned the personal account and both organizations, then successfully enumerated private repositories from all three installations.
Likely Explanation
The exact server-side cause was not exposed by error -32603. The most likely explanation is that the long-running Codex process kept an old copy of the connector state while the GitHub installations and ChatGPT synchronization changed.
Codex uses an internal connector bridge that appears as codex_apps in technical diagnostics. A normal user does not need to configure this bridge directly.
An OpenAI GitHub connector incident overlapped this setup session. ChatGPT recovered and synchronized the repositories, while the already-running Codex process continued returning internal errors until it was fully exited and reopened.
Treat this explanation as an inference from the timing and the successful restart, not as a confirmed OpenAI root-cause analysis.
Troubleshooting Checklist
- Confirm that the correct GitHub user is connected in ChatGPT.
- Confirm one GitHub App installation for the personal account and every required organization.
- Confirm that each installation includes the intended repositories.
- Wait at least five minutes after changing repository access.
- Confirm private repositories in the ChatGPT synchronized repository selector.
- Check OpenAI status for a GitHub connector incident.
- Exit Codex through
File > Exit. - Reopen Codex and retry with a new conversation if necessary.
- Test the installed-account list before requesting the complete repository inventory.
- Avoid rotating tokens or reinstalling healthy GitHub installations without evidence that authorization is broken.
When the Restart Does Not Work
If ChatGPT can access the repositories but a fully restarted Codex session still fails, report the problem with the Codex application version, operating system, timestamp, failed GitHub tool name, exact error text, and confirmation that ChatGPT repository synchronization works.
The official GitHub MCP Server is an independent fallback for local Codex access. GitHub provides a dedicated Codex installation guide, including remote and local configurations.
Configure the MCP server with least-privilege authentication and read-only mode when the task only requires inventory or analysis. A locally configured MCP server is separate from the ChatGPT GitHub connector and does not repair the connector itself.
References
- OpenAI: Connecting GitHub to ChatGPT
- OpenAI: Model Context Protocol in Codex
- OpenAI: Plugins
- OpenAI status: Elevated errors for GitHub connector on July 16 and 17, 2026
- GitHub Docs: Installing a GitHub App from a third party
- GitHub: ChatGPT Codex Connector
- GitHub: Create a new ChatGPT Codex Connector installation
- GitHub: Install GitHub MCP Server in OpenAI Codex
- JSON-RPC 2.0 specification
Reproduction Environment
- Date: July 17, 2026.
- Platform: Windows.
- Codex desktop package:
26.707.12708.0. - GitHub scope: one personal account and two organizations.
- Symptom: every Codex GitHub connector call returned
MCP error -32603: Internal errorwhile ChatGPT could search synchronized private repositories. - Resolution: exit through
File > Exit, reopen Codex, and retry the GitHub connector.
UPDATE: added the same thing to claude.ai (web only)
Update: same setup works for Claude (Pro/Max), minus a couple of quirks (and some more on top
)
Ran the exact same multi-org setup on Claude this week (Max plan), swore considerably more this time, and it’s the same animal as the Codex one above. If you already read the main post, you don’t need most of this. The buildings-and-permission-slips model carries over untouched: one GitHub identity, one installation per repo owner, a different installation ID for each owner, all of it. What follows is only the Claude-specific part, plus the one place GitHub’s UI walked me in circles for a while.
Short version
- Claude has its own GitHub App. It is not the Codex connector.
- You add each organization the same way as Codex: open the install URL once per owner and pick that owner.
- The installation’s own settings page cannot add an org. It only sets repository access for the single owner it belongs to. No org selector, no grant button. That is not you missing something.
- After connecting, Claude may throw you onto a page that says you have no access to organization settings. It is harmless. Ignore it.
- Verify inside a chat or project repository picker, never on a settings page.
- No
File > Exitrecovery. The web connector reads live.
The one URL that does the work
Claude’s app lives at github.com/apps/claude. To add an owner, whether that is your personal account or an organization, open this once per owner:
https://github.com/apps/claude/installations/new
Pick the owner, choose all repositories or a subset, then Install if you own the org or Request if you do not, in which case the org owner gets the approval. Open it again for the next org. In my case that was one pass for the personal account and one for each of the two companies, same as the Codex setup.
Do not try to do this with Claude’s own Disconnect and Connect buttons. That just re-runs the identity connection. It does not create an installation for the organization.
The dead end that cost me time
If you land on the installation’s own settings page, the one where repository access reads All repositories or Only select repositories with a Danger zone underneath, that page governs a single owner and nothing else. There is no organization selector on it and no per-org grant control. To add another org you go back to the install URL above and choose that org there. This was not obvious, and I spent real time poking at that page expecting an “add organization” button that does not exist.
And to be blunt about why it cost me so long: the current help docs, and every AI assistant I asked while troubleshooting, kept insisting I add the organization from this exact screen, usually pointing at some “Organization access” grant control. There is no such setting here. The docs are stale, so ignore that instruction no matter who or what repeats it.
The message you can ignore
After the app connects, Claude may bounce you to a page that says you do not have access to organization settings, and that those are available on Team and Enterprise plans. On a Pro or Max account that message is noise. “Organization” there means a Claude Team or Enterprise workspace, which you do not have. It has nothing to do with your GitHub organizations, and nothing failed. Close it and move on.
How to actually verify
Skip the settings pages entirely. Start a chat, hit the plus, and choose Add from GitHub. Or open a project and hit the plus, then GitHub, in the knowledge panel. If the picker lists private repos from your personal account and from every org you installed, you are done. That is the only confirmation that counts. The list can take a few minutes to fill while Claude syncs, the same delay Codex has.
There is no File > Exit step here. The web connector reads live, so there is no long-running desktop process holding stale state. If a picker ever looks out of date after you change installations, a fresh chat repopulates it.
One caveat I did not hit but you might: if an organization enforces SSO and its repos still refuse to appear after you install, an org owner has to approve the app for that org. In my case the install was enough.
References
- Original post: Connect a Personal GitHub Account and Multiple Organizations to ChatGPT and Codex
- Claude GitHub App: github.com/apps/claude
- New installation, per owner: github.com/apps/claude/installations/new
- Your installations: github.com/settings/installations
- Claude Help, Use the GitHub integration: support.claude.com