Summary
Using the Retool CLI (0.4.36) with the new app builder, a React app was converted from a Classic app by the Retool Agent, which created a retool-agent/ branch containing Retool-managed /context/ files. After cloning that branch and changing only frontend/backend files,
retool checkpasses butretool pushis rejected server-side with a [cliFileAuthorization] error claiming an unchanged /context/ file was modified β likely because the gate evaluates the Retool-managed path against a baseline (main) where /context/ never existed, treating it as a net-new addition.AI Response
The supported CLI workflow is to clone the branch, run
pnpm install, validate withretool check, thenretool pushandretool publish. A key documented step for Agent-created branches is to runretool pullfirst: if a branch was updated on the server (for example, by an agent thread that pushed the conversion context), you must pull to bring local state back in sync with the true branch head before pushing. Doing so realigns your local baseline with the server's retool-agent branch head β which contains /context/ β rather than a baseline where /context/ is absent, which is consistent with the addition-versus-baseline behavior observed. Retool-managed paths under /context/ should be left untouched (not modified or deleted) throughout. No existing community report was found corroborating this specific cliFileAuthorization behavior as a confirmed bug.Sources
Retool CLI | Retool Docs
Documents the supported CLI build/push flow and specifically instructs runningretool pullto re-sync local state when an agent thread has pushed to the branch before you push again.
Retool CLI Public Beta
The Retool CLI Public Beta announcement confirms the CLI is the supported tool for building, managing, and publishing Retool-native React apps and links to the current workflow docs.
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. ![]()