Repository navigation
slack_file image blocks appended with chat.appendStream render as missing images inline #1961
Description
Activity
Thanks for the detailed repro, @sealogfish 🥇
I followed your steps but couldn't reproduce the broken image, so I'm hoping you can help close the gap.
I uploaded, polled
files.infountil the thumbnails were ready, then sent the image block viachat.appendStream(blocks chunk) in both a DM and a channel withthread_ts. It rendered fine in every case, live and finalized. On the API side,files.info(...).sharesshowed the file shared into the conversation andconversations.repliesreturned an intactimageblock with a populatedimage_url, so the association looks correct in my testing.To pin down what's different about your setup:
- Which client shows the broken thumbnail (desktop / web / mobile) and its version?
- Does it persist after a full page reload, or only appear during the live stream?
- Single workspace or Enterprise Grid, and is the file shared across workspaces?
Happy to dig in once I can see the failing request
- addedneeds infoAn issue that is claimed to be a bug and hasn't been reproduced, or otherwise needs more infoAn issue that is claimed to be a bug and hasn't been reproduced, or otherwise needs more infoand removed
on Sep 9, 2026 Hi @WilliamBergamin,
- I tried this on both web (Chrome) and Desktop (Mac Version 4.51.191
c745cdd438f19de75478cb2dee3d5e2532c0c3b8@1788997653) but it was happening for both - After reloading, the issue doesn't persist and the image renders. It seems to always occur during the initial stream.
- Single workspace. To my understanding, the file should be a private file only available in the DM since I didn't specify any channels/thread parameters. How do I best verify if the file is shared across workspaces?
I did try specifying the channel argument in
files_upload_v2(). This results in a upload in the channel (DM) directly, before the file is appended to the stream. However, both images still render properly. The reason for not specifying channel/thread in the function call is because I would like to do formatting of the blocks first before streaming it to the user.I was also observing the network logs and it seems like the first
files.inforeturnsfile_not_found. I don't think this is my code calling the API as there is a subsequent call after that succeeds, and I don't see any logs on my end that suggest that I tried.

- I tried this on both web (Chrome) and Desktop (Mac Version 4.51.191
Thanks for sharing more information 🙏 I tried reproducing this again but got the same behavior as before, this could be an edge case related to how the app is installed on an organization
I reported this issue internally, hopefully we can get to the bottom of this!
There isn't much we can do inside python-slack-sdk to patch this since it seems like a server side/frontend, but you can also report this through support@slack.com
Description
When an image block referencing a Slack-hosted file is appended to a streaming message using
chat.appendStream, Slack initially renders a missing-image placeholder.Clicking the missing image opens and displays the correct image, which indicates that:
The same streamed message's DOM contains a valid Slack thumbnail URL, but Slack replaces the inline background image with an
unable-to-load-errorasset.This may be a server-side file-sharing/association issue specific to blocks appended through the streaming APIs.
Reproducible in:
The Slack SDK version
3.43.0
Bot scopes:
chat:writefiles:readfiles:writePython runtime version
3.13.7
OS info
ProductName: macOS
ProductVersion: 26.6.2
BuildVersion: 25G83
Steps to reproduce:
(Share the commands to run, source code, and project settings (e.g., pyproject.toml))
Expected result:
The Slack-hosted image should render inline in the completed streaming message.
Actual result:
Slack renders a missing-image placeholder.
Clicking the placeholder opens and displays the correct image.
Inspecting the rendered HTML shows that Slack resolved the file to a generated thumbnail URL:
The href points to the generated Slack thumbnail, while the inline background is replaced with Slack's unable-to-load-error image.
Requirements
For general questions/issues about Slack API platform or its server-side, could you submit questions at https://my.slack.com/help/requests/new instead. 🙇
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.