Codex says this, it may be useful:
The chat preview reuses the same signed image URL when the file changes (ChatMarkdown.tsx). The server allows that URL to be cached for an hour (http.ts). Because the image’s src does not change, the browser can keep showing the old bytes.
The file preview panel avoids this by adding a workspace revision to its URL (FilePreviewPanel.tsx). The chat preview has no equivalent.