Official way to run page save compaction on hardened backend images?

Summary

On a self-hosted deployment being migrated from the classic backend image (tryretool/backend:4.34.2-stable) to the hardened image (4.34.2-stable-hardened), the documented page save compaction command ./retool_backend --run-pagesave-compaction fails with an 'exec format error' because the hardened image's entry point is a Bazel-built OCI binary that has no shebang and does not forward arguments like the classic bash wrapper does.

AI Response

This behavior stems from a fundamental design difference rather than a bug. Hardened images are built with Bazel on a minimal Wolfi/Chainguard base, so the file layout, users/permissions, and entry point differ from the Debian-based classic images, and nonessential shell tooling is intentionally removed. As a result, the classic invocation pattern (relying on the bash wrapper to forward arguments to node bundle/main.js) does not carry over, which is exactly why direct invocation returns an exec format error. The published documentation confirms these entry-point and tooling changes but does not currently document a hardened-specific command for running page save compaction, so there is no verified alternative invocation to share at this time. Reviewing the hardened images guidance below is the best-supported next step for validating maintenance workflows on the hardened tags.

Sources

:bookmark: Hardened images for self-hosted Retool | Retool Docs
Explains that hardened images are Bazel-built OCI images on a Wolfi/Chainguard base with a different entry point, curated system packages, and no in-container shell tooling — directly accounting for why the classic compaction command fails.
:bookmark: Hardened images available in stable channel
The official product update announcing hardened images in the stable channel, with migration guidance and a note to identify any current reliance on shell access or system tools before rolling out.

The Community Team is testing out a new automation. Let us know if it's helpful (or not) by leaving a :heart:, :+1:, or :-1:. Or by marking this post as the "Solution"! Let us know if you have any feedback here. :rocket: