-
Hello Retool Community,
We are experiencing an issue with the native S3 resource "Delete a file from S3" action on our self-hosted Retool installation.
Environment
Retool: 4.34.3-stable
Retool build displayed in browser: 4.34.3-3305b79 (Build 5610)
Helm chart: 6.11.23
Deployment: Self-hosted on Kubernetes / K3s
S3-compatible storage: Garage 2.3.0
S3 access: HTTPS through HAProxy
S3 region: garageOther operations using the same S3 resource work correctly:
- Upload Data: OK
- Read a file from S3: OK
- Delete a file from S3: object is deleted, but Retool reports an error
Steps to reproduce
- Configure an S3 resource pointing to the Garage S3-compatible endpoint.
- Upload a file, for example:
bucket: garage-test
key: test-retool.txt - Confirm that the object exists.
- Create/run a query using:
Action type: Delete a file from S3
Bucket name: garage-test
S3 file key: test-retool.txt - Run the query.
Observed behavior
The object is successfully deleted from the S3 bucket.
We independently confirmed this by performing a HeadObject request after the Retool query: the object returns 404 / Not Found.
However, Retool displays the query as failed with:
Failed to execute 'json' on 'Response': Unexpected end of JSON input
Retool backend logs consider the same query successful:
- resourceType: "s3"
- QUERY_COMPLETE
- userError: false
- QUERY_RESULT
- statusCode: 200
- success: true
The browser request to:
POST /api/playground/query
also returns:
HTTP 200 OK
Content-Length: 0The Response tab in Chrome DevTools is completely empty.
Additional verification
We reproduced the equivalent DeleteObject operation outside Retool using the AWS CLI against the exact same public S3 endpoint.
The S3 server returns:
HTTP/1.1 204
Content-Length: 0 / empty response bodyand the AWS CLI handles the deletion successfully.
This appears to be normal S3 DeleteObject behavior.
We therefore suspect that the successful empty response generated by the S3 DeleteObject operation is not handled correctly somewhere in the Retool query response path.
Expected behavior
The Retool S3 Delete action should be reported as successful when the S3 DeleteObject operation succeeds with HTTP 204 No Content.
Questions
- Is this a known issue with the native S3 resource?
- Is Garage or another S3-compatible service known to trigger this behavior?
- Is there a configuration option or workaround for handling an empty successful DeleteObject response?
- If this is a Retool issue, is a fix planned or already available in another Retool release?
We can provide additional backend logs, browser network traces, and AWS CLI debug output if required.
Thank you.
Summary
On a self-hosted Retool 4.34.3-stable deployment using a native S3 resource against Garage (an S3-compatible store), the 'Delete a file from S3' action successfully removes the object and the backend logs plus the /api/playground/query call both return HTTP 200 with an empty body, yet the query is reported as failed with 'Failed to execute json on Response: Unexpected end of JSON input'.
AI Response
This behavior matches a known issue where Retool attempts to parse an empty but successful response body (e.g., an HTTP 204 / empty 200 from a DeleteObject call) as JSON and errors out even though the operation succeeded. A Retool staff member has acknowledged this class of error and tied it to ongoing work replacing an older backend library, noting a fix was pending review. This deployment is already on 4.34.3, which is the latest stable self-hosted release, so the fix may not yet be present there; testing on a current Edge release (Edge carries changes ahead of stable) is the most direct way to confirm whether it resolves the empty-response handling. In the meantime, recreating the query has sometimes helped, and the deletion itself is completing correctly despite the reported error.
Sources
Unexpected end of file
Corroborates the same root cause — Retool failing to parse an empty/204 successful response as JSON — with staff confirming it stems from replacing an older backend library and that a fix was awaiting review.
The Community Team is testing out a new automation. Let us know if it's helpful (or not) by leaving a
,
, or
. Or by marking this post as the "Solution"! Let us know if you have any feedback here. ![]()