NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3321 most downloaded on crates.io
Core implementation of the Cedar policy language
Last release 22 days ago
15 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Rarely documented
notes for 4 of the last 60 stable releases
7 versions withdrawn
withdrawn after publishing
3 years old
84 releases · first in 2023
One column per quarter.
Release 4.13.0, available on crates.io
Release 4.13.0, available on crates.io
has expression with a chain of attributes (e has a.b.c) now converts to JSON as ahas node whose attr field is an array (["a", "b", "c"]), instead of ahas checks ((e has a) && (e.a has b) && (e.a.b has c)).has still converts with attr as a string. The evaluation result isappliesTo listValidationResult::validation_warnings for ValidationWarning::InvalidActionApplication (#2545).tpe experimental feature, is_authorized_batched now automatically loads actionstpe experimental feature, removed the BatchedEvalError::MissingEntities error varianttpe experimental feature, PolicySet::tpe is faster on large policy setsPolicy::try_into_pst() and Template::try_into_pst() to preserve policy IDs for text- and JSON-backed values, restoring PolicySet::try_into_pst() / PolicySet::from_pst() round trips (#2543).protobufs feature, the Schema::decode function now accepts schemas that reference Action entity types not defined in the schema. This was previously rejected (#2491).tpe feature, fixed TpeResponse::policy_set to return the residual policies, matching TpeResponse::policies as documented. Previously it returned the original policies (#2540).tpe feature, partial entity validation now accept action entities with unknown components. The UnknownActionComponent is now never returned and is deleted (#2555).curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cedar-policy/cedar/releases/download/cedar-policy-cli-v4.13.0/cedar-policy-cli-installer.sh | shpowershell -ExecutionPolicy Bypass -c "irm https://github.com/cedar-policy/cedar/releases/download/cedar-policy-cli-v4.13.0/cedar-policy-cli-installer.ps1 | iex"| File | Platform | Checksum |
|---|---|---|
| cedar-policy-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| cedar-policy-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| cedar-policy-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| cedar-policy-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| cedar-policy-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
…and TpeResponse::nontrivial_residual_policies is deprecated. The previous behavior (iterating all residuals including trivial ones) is available via T…
Release 4.12.0, available on crates.io
schema_to_json_with_resolved_types to support converting schemas that use the Action entity type as an attribute type.PolicySet::from_pst now returns an error if a map key doesn't match the id of its corresponding template or policy, instead of silently accepting the malformed input (#2444).tpe feature, fixed PartialEntities::from_json_value to return an error given two entities with duplicate ids.Ord and PartialOrd for EntityUids did not order instances lexicographically by type, then by entity id (#2463, #2483).pst) support for variadic-is-in-range feature: a variadic isInRange is modelled by a pst::Expr::VariadicOp{...} in the PST (#2380).tpe feature, added functions for inspecting partial evaluation results. Adds TpeResponse::reason to get the ids for policiesTpeResponse::get_policyTpeResponse::policy_set to retrieve all partial evaluated policies as a PolicySet.encode method now returns Result<Vec<u8>, EncodeError> instead of Vec<u8>. Encoding rejects expressions and schema types whose nesting depth would exceed prost's decode recursion limit, returning EncodeError::MaxDepthExceeded. This prevents a class of bugs where successfully encoded data could not be decoded.Entities::decode now computes the transitive closure instead of assuming it is already computed. These changes may result in lower performance for protobuf decoding. The previous, unvalidated behavior is available via the new decode_unchecked methods (e.g., Entities::decode_unchecked) for trusted encoded data.tpe feature, TpeResponse::residual_policies is updated to return only non-trivial residuals andTpeResponse::nontrivial_residual_policies is deprecated. The previous behavior (iterating all residuals including trivial ones)TpeResponse::policies.Validator against a Schema with a large action set now uses substantially less peak memory and avoids redundant per-request work, especially under concurrent load. (#2439)curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cedar-policy/cedar/releases/download/cedar-policy-cli-v4.12.0/cedar-policy-cli-installer.sh | shpowershell -ExecutionPolicy Bypass -c "irm https://github.com/cedar-policy/cedar/releases/download/cedar-policy-cli-v4.12.0/cedar-policy-cli-installer.ps1 | iex"| File | Platform | Checksum |
|---|---|---|
| cedar-policy-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| cedar-policy-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| cedar-policy-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| cedar-policy-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| cedar-policy-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
Fixed transitive closure computation for schemas with cyclic entity type hierarchies of length ≥ 3 (introduced in 4.11.0).
Full Changelog: v4.11.1...v4.11.2
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Release 3.4.3, available on crates.io
Release 3.4.3, available on crates.io
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Possible panic (when stack size limit reached) in Context::empty() (#524, fixed by #526)
Cedar Language Version: 3.0.0
Context::empty() (#524,
fixed by #526)ValidationWarningKind is now non_exhaustive, allowing future warnings to be added without a breaking change.
Cedar Language Version: 3.0.0
is operation as described in
RFC 5.
(#396)Template::from_json and Template::to_json apis as public (#458)Entities to make it easy to add a collection of entities to an
existing Entities structure. (#276)PolicySet::remove_static, PolicySet::remove_template and
PolicySet::unlink to remove policies from the policy set. (#337, resolving #328)PolicySet::get_linked_policies to get the policies linked to a Template. (#337)cedar_policy_core::evaluator::{EvaluationError, EvaluationErrorKind} and
cedar_policy_core::authorizer::AuthorizationError error types. (#260, #271)ParseError::primary_source_span to get the primary source span locating an
error. (#324)ValidationResult::validation_warnings to access non-fatal warnings returned
by the validator and ValidationResult::validation_passed_without_warnings.
The main validation entry point now checks for warnings previously only
available through confusable_string_checker. (#404)Entity::new_no_attrs() which provides an infallible constructor for Entity
in the case that there are no attributes. (See changes to Entity::new()
below.) (#430)RestrictedExpression::new_entity_uid() (#442, resolving #350)PolicySet::unknown_entities to collect unknown entity UIDs
from a PartialResponse. (#353, resolving #321)context, and records in entity attributes). (#375)Request::new() now takes an optional schema argument, and validates the request
against that schema. To signal validation errors, it now returns a Result.
(#393, resolving #191)Entities::from_*() methods now automatically add action entities present in
the schema to the constructed Entities, if a schema is provided. (#360)Entities::from_*() methods now validate the entities against the schema,
if a schema is provided. (#360)Entities::from_entities() and Entities::add_entities() now take an
optional schema argument. (#360)Diagnostics::errors() now returns an iterator over AuthorizationErrors.
(#260)Response::new() now expects a Vec<AuthorizationError> as its third
argument. (#260)ip("192.168.0.1/24") == ip("192.168.0.3/24") was previously true and is now
false. The behavior of equality on single IP addresses is unchanged, and so is
the behavior of .isInRange(). (#348)frontend module. This also means some error types
have changed. (#365, #448)Entity::new() now eagerly evaluates entity attributes, leading to
performance improvements (particularly when entity data is reused across
multiple is_authorized calls). As a result, it returns Result, because
attribute evaluation can fail. (#430)Entities::from_json_*() also now eagerly evaluates entity attributes, and as
a result returns errors when attribute evaluation fails. (#430)Entity::attr() now returns errors in many fewer cases (because the attribute
is stored in already-evaluated form), and its error type has changed. (#430)Context::from_*() methods also now eagerly evaluate the Context, and as
a result return errors when evaluation fails. (#430)cedar_policy_core::est::EstToAstError to
cedar_policy_core::est::FromJsonError. (#197)cedar_policy_core::entities::JsonDeserializationError::ExtensionsError
to cedar_policy_core::entities::JsonDeserializationError::ExtensionFunctionLookup.
(#360)SchemaError. (#231)SchemaError has a new variant corresponding to errors evaluating action
attributes. (#430)<EntityId as FromStr>::Error is now Infallible instead of ParseErrors.
(#372)Display impls for Policy and PolicySet, and add a Display
impl for Template. The displayed representations now more closely match the
original input, whether the input was in string or JSON form. (#167, resolving
#125)ValidationWarning::location and ValidationWarning::to_kind_and_location
now return &SourceLocation<'a> instead of &'a PolicyID, matching
ValidationError::location. (#405)ValidationWarningKind is now non_exhaustive, allowing future warnings to
be added without a breaking change. (#404)> and >=. They now evaluate left to right,
matching all other operators. This affects what error is reported when there is
an evaluation error in both operands, but does not otherwise change the result
of evaluation. (#402, resolving #112)PolicySet::link to not mutate internal state when failing to link a static
policy. With this fix it is possible to create a link with a policy id
after previously failing to create that link with the same id from a static
policy. (#412)partial-eval experimental feature). (#419, resolving #418)__expr escape from Cedar JSON formats, which has been deprecated
since Cedar 1.2. (#333)ValidationMode::Permissive behind an experimental feature flag.
To continue using this feature you must enable the permissive-validate
feature flag. (#428)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →