GitHub connector create_issue fails on public repo while authenticated gh succeeds

Resolved 💬 2 comments Opened May 6, 2026 by jjoanna2-debug Closed May 11, 2026

Summary

The Codex GitHub connector failed to create an issue in a public third-party repository with 403 Resource not accessible by integration, while the same operation succeeded immediately through authenticated gh issue create from the same Codex session and machine.

This is not a user permission failure and not a public-repository limitation. The authenticated user can create the public issue normally. The failure is in the connector write path or in the connector's error handling for that path.

Co-authorship

This issue was co-authored by Jean-Claude Joanna and Codex during a live Codex for macOS session. Codex itself diagnosed the connector failure, performed the successful gh fallback, patched its own local cached GitHub plugin guidance as a workaround, and prepared this report.

Reproduction

Repository: pluk-inc/markdown-preview

  1. Use the Codex GitHub plugin tool github_create_issue / _create_issue against pluk-inc/markdown-preview.
  2. The connector returns:
Error code: FORBIDDEN
GitHub API error 403: {"message":"Resource not accessible by integration","documentation_url":"https://docs.github.com/rest/issues/issues#create-an-issue","status":"403"}
  1. Run the equivalent operation with authenticated gh issue create from the same Codex session/machine.
  2. The issue is created successfully:

https://github.com/pluk-inc/markdown-preview/issues/75

Expected behavior

For public issue creation where the authenticated user can create the issue, the GitHub connector should either:

  • use a user-authorized token path that can perform the same public issue write, or
  • return a clear connector-specific error that says the GitHub App integration cannot perform this write and that local/user GitHub auth may still work.

Actual behavior

The connector exposes a generic issue creation tool, attempts the write, and returns GitHub's raw integration error. Without a manual gh retry, this incorrectly looks like the issue cannot be created.

Reasoning-level note

This is not reasoning-level dependent. The same class of failure can occur across reasoning levels because the error is produced by the GitHub connector/API auth path, not by model reasoning quality.

Local workaround already applied by Codex

After the failure, Codex patched its own local cached GitHub plugin skill guidance so future runs do not misclassify this connector error as a user permission problem. The local mitigation says that if issue or issue-comment writes return Resource not accessible by integration, Codex should immediately retry the same public issue/comment operation with authenticated gh when gh auth status succeeds, and should treat a successful gh retry as connector auth-path evidence.

That local self-patch is only a workaround in the local cached plugin guidance. It is not the product fix.

Environment notes

  • Codex macOS app: 26.429.61741
  • App build: 2429
  • codex CLI: 0.128.0-alpha.1
  • Session model configuration: gpt-5.5
  • Session reasoning configuration: observed in this session as high; issue is not reasoning-level dependent
  • GitHub plugin: github@openai-curated
  • Local gh auth status succeeds for the same GitHub account.
  • gh issue create succeeds for the same target repository and issue body.

No screenshot is attached because the relevant chat includes private user context. The reproducible evidence is the connector error, the successful gh issue create, the created public issue URL, and the version information above.

View original on GitHub ↗

2 Comments

jjoanna2-debug · 3 months ago

Additional confirmation: ChatGPT GitHub connector shows the same class of failure

The same class of failure is reproducible from ChatGPT's GitHub connector as well, not only from Codex.

In this case, the authenticated GitHub account was able to create the issue successfully through gh, and the public issue now exists at:

https://github.com/pluk-inc/markdown-preview/issues/75

However, attempts through the GitHub connector failed with 403 Resource not accessible by integration, including issue-write/mutation attempts where the authenticated user can otherwise perform the action through normal GitHub auth.

That strongly suggests the problem is not the user's GitHub permission, the target repository's public issue settings, or model reasoning. It appears to be the connector/plugin authorization path: the tool exposes issue-write operations, but routes them through an integration identity that lacks the same effective write authority as the authenticated user.

Expected behavior should be either:

  • perform the write through the user-authorized GitHub path where available; or
  • clearly state that the GitHub App/integration lacks write permission for that public third-party repository, while authenticated local GitHub CLI may still succeed.

The current raw 403 Resource not accessible by integration is technically accurate but operationally misleading, because it makes the failure look like a repository or user permission problem when the same user can complete the action normally.

DiscoStew6082 · 17 days ago

Still reproducible in Codex with GitHub plugin github@openai-curated-remote version 0.1.8-2841cf9749ae and codex-cli 0.144.3.

This time the failing path is a top-level PR comment on the public third-party repository jundot/omlx, PR #2593:

  1. The plugin tool github_add_comment_to_issue returned:
GitHub API error 403: Resource not accessible by integration
  1. The identical comment then posted successfully through host-authenticated gh pr comment as the same user:

https://github.com/jundot/omlx/pull/2593#issuecomment-5247957288

Additional evidence:

  • The connector installation list shows the GitHub App installed only on the DiscoStew6082 account; jundot/omlx is outside that installation scope. Public reads work, but connector writes cannot.
  • The bundled GitHub plugin skill still explicitly says to prefer the GitHub app for comment workflows and describes connector-backed write actions. Codex therefore predictably attempts a mutation the integration cannot perform before falling back to gh.
  • This is both a connector capability-routing problem and a plugin-guidance problem. The workflow should check whether the target repository is covered by the App installation before a mutation, or route third-party issue/PR comment writes directly through authenticated gh when available.

I added a local global-instruction workaround to skip the connector for GitHub comment mutations, but that is not a product fix. Please consider reopening this issue or tracking the plugin-guidance fix separately.