openai / openai/codex

Allow binary image uploads from ChatGPT attachments to GitHub without a separate execution environment

Open
#45,448 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

codex-web enhancement
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

Environment

  • Surface: ChatGPT web
  • Workflow: Codex / Work Mode with the GitHub connector
  • Target: a GitHub-hosted website repository
  • File type: attached PNG/JPEG image

What happened

The GitHub connector was available and could perform Git Data operations such as create_blob, create_tree, create_commit, and update_ref. The image was also present as a ChatGPT attachment and had been copied to a temporary workspace path.

The failure occurred before create_blob. The Codex execution environment needed to read the image bytes and Base64-encode them was unavailable. The GitHub create_blob operation accepted content as a string, but there was no direct way to give it the ChatGPT attachment ID, persistent file ID, or workspace path.

The workflow therefore reached a gap:

  1. ChatGPT could display and identify the attached image.
  2. GitHub access was connected and functioning.
  3. Codex could not read and encode the binary because its execution environment was unavailable.
  4. The GitHub tool could not consume the attachment or file reference directly.
  5. The image could not be committed, although text/HTML updates remained possible.

This has worked in other sessions using the lower-level Git Data/Base64 process, so the behavior is intermittent and dependent on execution-environment availability.

Expected behavior

A GitHub-connected Codex session should be able to upload an attached binary asset without depending on a separate, intermittently unavailable execution environment.

Requested improvements

Please provide one or more of the following:

  1. A binary-safe “Upload file to GitHub repository” operation accepting:
    • repository
    • branch
    • destination path
    • ChatGPT attachment, persistent file, or workspace-file reference
    • commit message
  2. Allow create_blob to accept a local/attached file reference and perform Base64 encoding internally.
  3. Automatically start or recover the execution environment when binary conversion is required.
  4. Preserve the pending upload and make it retryable if the execution environment becomes unavailable.
  5. Report the exact failed stage: attachment read, encoding, blob creation, tree creation, commit, or ref update.
  6. Optionally support importing a publicly accessible image URL, with file-size, MIME-type, and authorization checks.
  7. Keep the existing user approval gate and verify the committed path and blob SHA after completion.

Why this matters

This gap allows an article’s HTML to be published while its accompanying image cannot be preserved in the site repository. It makes a routine publishing workflow unreliable even when both the source attachment and GitHub authorization are present.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No repository files, tests, or entry points are named. Start by tracing the GitHub Git Data operations and the boundary between ChatGPT attachments and the unavailable execution environment. Done should include a defined binary-upload path, retry behavior, failure-stage reporting, approval handling, and verification of the committed path and blob SHA.

Written by the indexing model from the issue text.

Assessment

Tech stack
github
Domain
api, devtools
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.