Bazel Remote Execution "capabilities" Failure in CI
Bazel offloads actions to a Remote Build Execution (RBE) backend via --remote_executor. The build fails when the executor is unreachable, the platform/capabilities do not match, or auth is wrong. Connectivity issues are transient and clear on retry.
What this error means
Actions fail with "Remote Execution Strategy unavailable" or a capabilities/platform mismatch against the RBE endpoint. A misconfig fails every run; an RBE outage is intermittent and recovers with --remote_local_fallback or a retry.
ERROR: Failed to query remote execution capabilities:
UNAVAILABLE: io exception
ERROR: Remote execution is requested but no remote executor is available.Common causes
RBE endpoint unreachable
A network blip, DNS failure, or overloaded RBE backend times out the capabilities query, so no actions can run remotely.
Execution platform/capabilities mismatch
The declared --remote_executor platform or the toolchain’s exec properties do not match what the backend offers, rejecting actions.
Auth/TLS misconfiguration
A missing credential or TLS trust problem rejects the connection to the RBE service.
How to fix it
Fall back locally on RBE outages
Let actions run locally when the executor is briefly unavailable so a transient outage does not fail the build.
# .bazelrc
build:remote --remote_executor=grpcs://rbe.example:443
build:remote --remote_local_fallback
build:remote --remote_retries=3 --remote_timeout=120Fix platform and auth config
- Match the exec platform /
exec_propertiesto what the RBE backend supports. - Verify the executor URL, scheme, and port, and refresh credentials/TLS trust.
- Use
--announce_rcto confirm the remote config group actually applied.
How to prevent it
- Set
--remote_local_fallbackso RBE outages degrade to local builds. - Keep exec platform/properties matched to the RBE backend.
- Rotate RBE credentials before expiry and monitor backend availability.