astrid-runtime/astrid · error
capsule '{}' is {}; --yes configures values but does not app
Error message
capsule '{}' is {}; --yes configures values but does not approve install authority. Re-run with --approve-untrusted after reviewing the artifact What it means
authority_decision implements the capsule install-authority consent flow. A capsule whose provenance is not automatically trusted requires explicit operator approval. Passing `--yes` silently is deliberately rejected: automated 'yes to all' must never grant install authority. The error names the capsule, its provenance label, and the exact flag to use after reviewing the artifact.
Source
Thrown at crates/astrid-cli/src/commands/capsule/install/authority.rs:38
) -> anyhow::Result<AuthorityDecision> {
if matches!(
inspection.provenance,
ArtifactProvenance::LocalRuntime { .. }
) {
return Ok(AuthorityDecision::Automatic);
}
if BATCH_MODE.load(Ordering::Relaxed) {
return Ok(AuthorityDecision::OperatorDistribution {
content_digest: inspection.content_digest.clone(),
});
}
if prompt.approve_untrusted {
return Ok(AuthorityDecision::ExplicitApproval {
content_digest: inspection.content_digest.clone(),
});
}
if prompt.yes {
bail!(
"capsule '{}' is {}; --yes configures values but does not approve install authority. Re-run with --approve-untrusted after reviewing the artifact",
inspection.capsule_id,
inspection.provenance.label()
);
}
eprintln!();
eprintln!(
"Capsule {} {} is {}.",
inspection.capsule_id,
inspection.version,
inspection.provenance.label()
);
if let Some(signer) = inspection.provenance.signer() {
eprintln!(" Signer: {signer}");
}
eprintln!(" Content: {}", inspection.content_digest);
if inspection.capability_expansions.is_empty() {View on GitHub (pinned to affd8760f4)
Solutions
- Review the capsule first (digest, signer, capability expansions), then re-run with `--approve-untrusted` instead of `--yes`.
- If this is an operator-managed distribution, run through the batch/distribution path where BATCH_MODE grants OperatorDistribution authority.
- Only approve if the artifact is trusted: verify the content digest against the publisher's published checksum.
- If the capsule should be inherently trusted (locally built runtime artifact), check why its provenance is not LocalRuntime (e.g. it was downloaded rather than built locally).
- In CI, use the intended non-interactive approval flag (--approve-untrusted) explicitly after verifying the artifact, rather than --yes.
Example fix
// before astrid capsule install ./third-party.capsule --yes // after # inspect digest/signer, then: astrid capsule install ./third-party.capsule --approve-untrusted
Defensive patterns
Strategy: validation
Validate before calling
fn will_reject_yes(yes: bool, approve_untrusted: bool, batch_mode: bool, provenance_local: bool) -> bool {
!provenance_local && !batch_mode && yes && !approve_untrusted
}
// if will_reject_yes(...), pass --approve-untrusted instead of --yes Try / catch
if ! astrid capsule install "$ART" --yes 2>&1 | grep -q 'does not approve install authority'; then echo "untrusted capsule: review then pass --approve-untrusted" fi
Prevention
- Never use --yes as a blanket approval for capsule installs in scripts.
- Verify content digests/signers before passing --approve-untrusted.
- Use batch/operator-distribution mode for trusted internal distribution pipelines.
- Treat any authority prompt as a security gate — read capability expansions before approving.
When it happens
Trigger: Installing (via install_from_local_path_for_principal, unpack_via_lib, or daemon_install_authority) a capsule whose provenance is not LocalRuntime, with ManualInstallOptions.yes == true and approve_untrusted == false, outside BATCH_MODE. The bail fires before the interactive prompt is shown.
Common situations: CI or scripts pipe `yes | astrid capsule install ...` or pass -y expecting it to skip all prompts; a developer aliases the install command with --yes and hits an untrusted third-party capsule; installing a capsule signed by an unknown signer after a dependency update.
Related errors
- capsule install authority was not approved
- manifest exceeds its installed capability approval: {details
- capsule '{}' is {}; explicit local approval is required
- {name} is not installed beside the Astrid CLI; refusing a PA
- headless approval automation is unsupported: approvals canno
AI-assisted analysis of astrid-runtime/astrid@affd8760f4 (2026-09-09).
Data as JSON: /api/errors/c07a5862190f0472.
Report an issue: GitHub.