SwiftPM re-reads every manifest when the environment changes, and both it and Xcode key link and plugin tasks on PATH. An agent's shell has a different PATH than the terminal's, so a build that was a no-op in one relinks everything and regenerates the GTK bindings in the other. Run swift and xcodebuild from an allowlisted environment, with PATH reduced to the directories that exist, each named once.