Allow binary image uploads from ChatGPT attachments to GitHub without a separate execution environment
Nobody has claimed this yet.
- 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:
- ChatGPT could display and identify the attached image.
- GitHub access was connected and functioning.
- Codex could not read and encode the binary because its execution environment was unavailable.
- The GitHub tool could not consume the attachment or file reference directly.
- 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:
- A binary-safe “Upload file to GitHub repository” operation accepting:
- repository
- branch
- destination path
- ChatGPT attachment, persistent file, or workspace-file reference
- commit message
- Allow
create_blobto accept a local/attached file reference and perform Base64 encoding internally. - Automatically start or recover the execution environment when binary conversion is required.
- Preserve the pending upload and make it retryable if the execution environment becomes unavailable.
- Report the exact failed stage: attachment read, encoding, blob creation, tree creation, commit, or ref update.
- Optionally support importing a publicly accessible image URL, with file-size, MIME-type, and authorization checks.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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