v1.14.2 — Cedar default + auto-wire
Closes the v1.14.0 "fail-closed without a policy backend compiled in" trap. Published symbi binaries (crates.io, Docker, GitHub Release tarballs) now ship with Cedar in the default feature set and symbi up / symbi run auto-wire CedarPolicyGate from policies/*.cedar files at startup. The fail-closed DefaultPolicyGate::new() default introduced in v1.14.0 stays in place as the fallback when no policy files are present; nothing about the security posture regresses.
Added
- Cedar in default features.
symbi-runtime'sdefaultfeature set now includescedar, and the binary crate'ssymbi-runtimefeature pin listscedarexplicitly. Operators who pinOpaPolicyGateBridgeor a customReasoningPolicyGatecan still opt out withcargo build --no-default-features --features "keychain,vector-lancedb". (Fixes the v1.14.0 UX wherecargo install symbishipped without the only in-tree policy backend, leaving every tool call denied by the fail-closed default.) try_wire_cedar_policy_gate()helper insrc/commands/up.rs(pub(super), reused bysrc/commands/run.rs). On startup, when thecedarfeature is compiled in ANDpolicies/contains at least one*.cedarfile, the helper constructs aCedarPolicyGate::deny_by_default()and loads each file as a named policy. If the directory is missing, empty, or every file fails to read, the helper returnsNoneand the existing fail-closedDefaultPolicyGate::new()fallback is used.--insecure-allow-all/SYMBI_INSECURE_ALLOW_ALL=1still takes precedence over both. Per-file Cedar syntax validation is deferred to evaluation time; malformed policies produce explicitLoopDecision::Denyreasons (consistent with the deny-by-default fallback).CedarPolicyGateandCedarPolicyre-exported fromsymbi_runtime::reasoning(feature-gated) so downstream embedders can wire the gate without reaching into thecedar_gatesubmodule.
Changed
- Docs:
docs/getting-started.mdfeature flag table flips thecedardefault to Yes with the auto-wire description; the "Cedar Policy Engine" subsection now documents the auto-wire contract and the--no-default-featuresopt-out instead of the old--features cedarbuild example.docs/security-model.mdgains a "Default-on since v1.14.x" paragraph describing the auto-wire base (deny_by_default), thepolicies/*.cedardiscovery rule, and the fail-closed fallback. All 5 translations (de, es, ja, pt, zh-cn) of both docs updated to match.
Crate versions
| Crate | Version |
|---|---|
symbi |
1.14.2 |
symbi-runtime |
1.14.2 |
symbi-dsl |
1.14.2 |
repl-core |
1.14.2 |
repl-cli |
1.14.2 |
repl-proto |
1.14.2 |
repl-lsp |
1.14.2 |
symbi-shell |
1.14.2 |
symbi-invis-strip |
0.3.0 (unchanged) |
symbi-approval-relay |
0.1.1 (unchanged) |
symbi-channel-adapter |
0.1.3 (unchanged) |
Pre-Built Binaries
Note: Pre-built binaries are tested but considered less reliable than installing via
cargo install symbior Docker (ghcr.io/thirdkeyai/symbi). If you encounter issues, please try those methods first.
Quick Install
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/thirdkeyai/symbiont/main/scripts/install.sh | bashHomebrew (macOS):
brew tap thirdkeyai/tap
brew install symbiManual download:
Download the appropriate binary for your platform from the assets below. Verify checksums with checksums.txt.
Verification
Each binary is signed with Sigstore cosign. Verify with:
cosign verify-blob --certificate symbi-*.pem --signature symbi-*.sig symbi-*.tar.gz \
--certificate-identity-regexp="https://github.com/ThirdKeyAI/Symbiont" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com"SHA256 checksums are in checksums.txt (also signed).