The RBAC resource resolver returned the hidden runtime backing app for workflow-only agents, which never receives a resource access policy, so per-resource overrides on the parent workflow app were ignored. Resolve agent_id to the policy-owning agent.app_id instead and keep backing_app_id strictly runtime-only.