subprocess.run(..., check=True, capture_output=True) captures the child's stderr and raises CalledProcessError. The log then holds a Python traceback and none of the child's own error text, so the failure is visible and its reason is not.
Swallowed Stderr Hides the Cause
Vault note, not reviewed against the source. Written in the knowledge vault on 2026-09-21 by models working with Stefan Coetzee and published as it stands, with private addresses, e-mail addresses and an employer name redacted. Check claims against the primary source before relying on them.