-
Notifications
You must be signed in to change notification settings - Fork 376
Browser attachments timeout when ChatGPT renames uploaded files (01.jpg → 01(5).jpg) #393
Copy link
Copy link
Open
Labels
P1Urgent regression or broken agent/channel workflow affecting real users now.Urgent regression or broken agent/channel workflow affecting real users now.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossThis issue is about lost, duplicated, misrouted, or suppressed channel messages.This issue is about lost, duplicated, misrouted, or suppressed channel messages.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P1Urgent regression or broken agent/channel workflow affecting real users now.Urgent regression or broken agent/channel workflow affecting real users now.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:message-lossThis issue is about lost, duplicated, misrouted, or suppressed channel messages.This issue is about lost, duplicated, misrouted, or suppressed channel messages.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Summary
With
--engine browser --browser-attachments always, Oracle can time out waiting for attachments even after ChatGPT has accepted the files and enabled Send.ChatGPT renames colliding uploads (
01.jpg→01(5).jpg,document.md→document(20260818-145702).md). Oracle's chip/name matcher still looks for the original basename. For short names such as01.jpg,01is shorter than the 6-character extensionless fallback, and01.jpgis not a substring of01(5).jpg, so the wait never completes.Increasing
--browser-attachment-timeoutdoes not help. The files are already in the composer.This is distinct from #221 / #214 (Send never becomes ready) and #275 (file input has the original name but no chip evidence). Here the chips exist, Send is enabled, and the original names are gone because ChatGPT renamed them.
Reproduced on
@steipete/oracle@0.18.0against a signed-in ChatGPT browser session.Environment
--browser-attachments alwaysbutton[data-testid="send-button"]Minimal reproduction
Use short, colliding names (the second run against the same composer is enough):
Repeat the same command (same filenames, same ChatGPT composer). The second run is the reliable fail: ChatGPT keeps the previous
01.jpgcollision and labels the new chip01(5).jpg/document(<timestamp>).md.Actual
Oracle reports one of:
or
After the failure, the ChatGPT composer already has:
Remove file 1: document(20260818-145702).mdRemove file 2: 01(5).jpgThe hidden
input[type=file]may still list01.jpgwhile the visible chip uses the renamed label.waitForAttachmentCompletion/matchesExpected()requireattachedNamesto include the original basename (or a ≥6-char stem).01.jpgmatches neither01(5).jpgnor a stem of length ≥6.A control run with unique long names (
synthetic-post-document.md+synthetic-post-image-01.jpg) finishes in ~20s on the same session.Longer names such as
document.mdcan still pass after rename because the stemdocumentis ≥6 characters and is a substring ofdocument(20260818-145702).md. That is why markdown-only uploads often succeed and adding01.jpgfails.Expected
Treat ChatGPT's collision rename as the same file:
name.extshould matchname(N).extandname(<digits>).extWorkaround for callers: give every
--filea unique basename longer than 6 characters. That should not be required once Oracle recognizes the renamed chip.Suggested matcher
In
src/browser/actions/attachments.ts(matchesExpected/ equivalent chip matching), accept:case-insensitively, in addition to the current includes / ellipsis / ≥6-char stem checks.
No logs, cookies, account data, or conversation content are included in this report.