NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3465 most downloaded on crates.io
Cedar is a language for defining permissions as policies, which describe who should have access to what.
Last release 22 days ago
15 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 56 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
80 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 |
Install cedar-policy-cli 4.12.0
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 |
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)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
Cedar Language Version: 4.5
Protobuf parsing for expression now error on encountering a like pattern element with multiple characters in a single PatternElem::Char instead of dro
Cedar Language Version: 4.5
like pattern element with multiple characters in a single PatternElem::Char instead of dropping the extra characters.is Type in ?slot scope constraints. Loading a JSON format policy using principal is Type in ?resource or resource is Type in ?principal. (#2351)Public syntax tree (pst) module for programmatic construction, inspection, and manipulation of Cedar policies. Accessible via to_pst() / try_into_pst(
Cedar Language Version: 4.5
pst) module for programmatic construction, inspection, and manipulation of Cedar policies. Accessible via to_pst() / try_into_pst() / from_pst() on Policy, Template, and PolicySet. try_into_pst() consumes the value to avoid cloning. TPE residual policies can be converted to PST for structured inspection of residual expressions. Third-party types used in PST fields (SmolStr, LinkedHashMap, NonEmpty) are re-exported from the pst module. (#816, #366)SlotNotSupportedError error.
This error variant is removed and replaced with UnlinkedSlotError, occurring only when slot in a linked policy is not bound. (#2314).appliesTo before an action block, and adding ; after a namespace declaration. (#1043, #1044)FunctionArgumentValidation errors now include a help message describing the expected format for extension function arguments: decimal, ip, datetime, and duration. (#834)error() nodes does not fail, instead results in JSON with {"error": []}. (#2202)protobuf policy sets to public type for policy sets containing templates and template-linked policies. (#2330)Extended has operator in JSON policies, maintaining backwards-compatible desugaring of extended has in Cedar policies to json (#1889).
Cedar Language Version: 4.5
has operator in JSON policies, maintaining backwards-compatible desugaring of extended has in Cedar policies to json (#1889).tolerant-ast and protobuf together: serialization of policies with error in action constraint fails (#2248, #2247).protobuf (#2240).Minor optimizations to decimal parsing (#2156) and constructing constant identifiers (#1880).
Cedar Language Version: 4.4
Entity::attrs() and Entity::tags() to iterate over all attributes/tags of an Entity
Cedar Language Version: 4.4
Entity::attrs() and Entity::tags() to iterate over all attributes/tags of an Entity (#2084)to_json_value() methods on Entities, Context, and EntityUid (matching the existing one on Entity) (#2085)From or TryFrom impls for converting public types into their corresponding FFI versions in
the ffi module (new impls on ffi::EntityUid, ffi::Context, ffi::Entities, ffi::Policy,
ffi::Template, and ffi::StaticPolicySet) (#2085)schema_to_json_with_resolved_types() function, which takes in a Cedar schema and returns a json schema without any instances of EntityOrCommon; they're all either Entity or CommonType (#2058)PartialEq, Clone, etc) for a number of types in the ffi module (#2083)<residual> && false to false and <residual> || true to true when <residual> is error-free. (#2091)Deprecated entity-manifest experimental feature. Consumers of these functions should migrate to the tpe feature and use PolicySet::is_authorized_batch…
Cedar Language Version: 4.4
entity-manifest experimental feature. Consumers of these functions should migrate to the tpe feature and use PolicySet::is_authorized_batch. (#1945)Fixed parsing of small negative decimal literals.
Cedar Language Version: 4.4
Deprecated schema parsing errors ActionAttributesContainEmptySet, UnsupportedActionAttribute, ActionAttrEval, and ExprEscapeUsed. These errors are nev…
Cedar Language Version: 4.4
TpeResponse::residual_policies and TpeResponse::nontrivial_residual_policies to get residual policies under experimental feature tpe. (#1906)PartialEntity::new and PartialEntities::from_partial_entities to programmatically construct PartialEntity and PartialEntities under feature tpe. (#1916)tpe experimental feature, PartialEntities::from_concrete now requires a Schema and will validate the entities,
ensuring that a PartialEntities object always meets the preconditions required for type aware partial evaluation. (#1903)has operation when the LHS record is projectable during partial evaluation. (#1912)ActionAttributesContainEmptySet, UnsupportedActionAttribute, ActionAttrEval, and ExprEscapeUsed.
These errors are never returned, so it is safe to delete any associated error handling code. (#1929)in, ==, and hasTag slightly more permissive to match the formally verified Lean model. (#1931)if-then-else, or, and expressions (#1940)partial-eval of feature tpe. (#1898)PolicySet::merge. Updated policy IDs were correctly reflected when getting a
policy with PolicySet::policy and PolicySet::template, but Policy::id, Template::id, and Policy::template_id
continued to return the original id.SchemaFragment::to_cedarschema could return a string that is not a valid Cedar schema.Fixed parsing of small negative decimal literals.
Cedar Language Version: 4.4
Added Schema::actions_for_principal_and_resource to list actions which apply to a particular principal and resource type.
Cedar Language Version: 4.4
Schema::actions_for_principal_and_resource to list actions which apply to a particular principal and resource type.tpe experimental feature, added PolicySet::query_actions to list the actions which might be authorized given partial request with an unknown action.tpe experimental feature, added PartialEntities::empty to conveniently construct an empty partial entity set.Fixed parsing of small negative decimal literals.
Cedar Language Version: 4.4
Cedar Language Version: 4.4 ### Fixed - Fixed doc.rs build
Cedar Language Version: 4.4
Added deep_eq to the Entity and Entities structs to allow comparing these objects for structural equality.
Cedar Language Version: 4.4
deep_eq to the Entity and Entities structs to allow comparing these objects for structural equality. (#1723)stateful_is_authorized, preparse_policy_set and preparse_schema to support stateful evaluation using a cached policy set and schema, in the ffi module. (#1831, fixing #1829)has_non_scope_constraint for Policy and Template, returning true if the policy or template has a when or unless condition. (#1852)ipaddr.isInRange that returns true if the target ipaddr is in range for any of the arguments as described in RFC 99, under the experimental flag variadic-is-in-range. (#1775)tpe. (#1575)tpe. Batched evaluation allows for permission queries against large databases of entities. (#1812)Fixed parsing of small negative decimal literals.
Cedar Language Version: 4.4
Added the ability to serialize Unknown values to JSON. Matching the format that is currently allowed for deserializing Unknown Values.
Cedar Language Version: 4.4
Entities to correctly consider entity tags when determining whether two entities are identical.
These functions will now only consider two entities identical if they have the same identifiers, attributes, ancestors, and tags.
Attempting to create an Entities object where a duplicated entity identifier maps to two entities with different tags will now
result in an error. Attempting to validate an action entity with any tags will always result in an error. This change
specifically impacts from_entities, add_entities, add_entities_from_json_file, add_entities_from_json_value,
and add_entities_from_json_str. (#1725)is in operator were not
correctly filled. This fix may cause some templates that would previously validate (in error) to no longer validate. (#1728)This is intended help some users migrate to the current 4.0 schema format. The new functions are deprecated and placed behind the deprecated-schema-co…
Cedar Language Version: 4.4
Entities::upsert_entities() to add or update Entitys in an Entities struct (resolving #1479)deprecated-schema-compat feature. (#1600)Expression::new_duration, Expression::new_datetime, RestrictedExpression::new_duration,
and RestrictedExpression::new_datetime (#1614)policy_set_text_to_parts in the ffi module (#1629).entity-manifest function compute_entity_manifest to
accept an &Validator instead of &Schema. Callers can construct a Validator
from a schema with Validator::new afterwhich a reference to the original
schema can be retrieved using Validator::schema. (#1584)Fixed parsing of small negative decimal literals.
Cedar Language Version: 4.3
Apply entity conformance checking to tags
Cedar Language Version: 4.3
HierarchyNotRespected validation error is no longer returned (although the error variant remains, to avoid a breaking change). This means that in some…
Cedar Language Version: 4.3
level-validate feature flag. That functionality is now available
without the feature flag. Stabilization comes with changes to fix bugs in the features.
Level validation is now more permissive when checking if expressions (fixing #1507),
and stricter when checking record literals and entity tag operations (fixing #1505 and #1503). (#1567)datetime extension), making datetime a default feature. (#1541)Entities::remove_entities() to remove Entitys from an Entities struct (#1453, resolving #701)PolicySet::merge() to merge a PolicySet into another PolicySet struct (#1476, resolving #610)to_cedar functions for PolicySet, Policy, and Template that
render the policy in the Cedar syntax. These functions can be used to convert
JSON formatted policies into the human-readable syntax (#1510, resolving #461)Validator::schema() to get a reference to the Schema even after it has been
consumed to construct a Validator (#1524)Schema::request_envs() to get all of the RequestEnvs that are valid
according to the schema. (This joins the existing Policy::get_valid_request_envs()
and Template::get_valid_request_envs() that return the subset of request envs that
are valid for a particular policy or template.) (#1547)EntityId::unescaped(), analogous to EntityId::escaped(). This is simply an
alias for EntityId::as_ref() with the AsRef impl that produces &str. (#1555)PartialResponse::unknown_entities method (#1557)Entities::len and Entities::is_empty methods (#1562, resolving #1523)Entities::add_entities and Entities::from_entities to ignore structurally equal entities with the same Entity UID.protobufs experimental feature, a number of changes to the interface and
the Protobuf format definitions, as we continue to iterate towards making this
feature stable. (#1488, #1495, #1506, #1535)HierarchyNotRespected validation error is no longer returned (although the
error variant remains, to avoid a breaking change). This means that in some
edge cases, policies that previously failed to validate under strict validation
will now pass validation, probably with an ImpossiblePolicy warning. (#1355,
resolving #638)Fixed parsing of small negative decimal literals.
Cedar Language Version: 4.2
Significant changes to the API for the experimental protobufs feature (#1452, #1467, others)
Cedar Language Version: 4.2
protobufs feature
(#1452, #1467, others)protobufs feature so that code depending on cedar-policy
with this feature now successfully builds, even if that code is not part of the
same Cargo workspace as cedar-policy, cedar-policy-core, etc (#1452).entity-manifest feature. If an entity appears as
both a possible value for a scope variable and an entity literal, slicing
using entity manifests will now correctly capture all necessary attributes (#1429).entity-manifest and level-validate
features. These features failed to consider any attribute accesses occurring
inside the guard of an if expression when guard expression had a singleton
boolean type (#1462).Assume sufficient stack space when it cannot be determined (#1446, resolving #1443). Note that on platforms not supported by stacker (e.g., Wasm, Andr
Cedar Language Version: 4.2
stacker (e.g., Wasm, Android), this means
that large inputs may result in stack overflows and crashing the process.
On all platforms supported by stacker (Linux, macOS, ...), Cedar will
continue to return the graceful error RecursionLimit instead of crashing.Disable doc generation for feature protobufs, unblocking that for other features
Cedar Language Version: 4.2
protobufs, unblocking that for other features (#1434)…to accept substitutions from an iterator and deprecated PartialResponse::reauthorize
Cedar Language Version: 4.2
has operator) (#1327, resolving #1329)datetime extension) as an experimental feature under flag datetime (#1276, #1415).isEmpty() operator on sets (#1358, resolving #1356)entity-manifest flag (#1239)protobufs flag (#1277, #1345)Entity::new_with_tags() and Entity::tag() functions (#1402, resolving #1374)Request::context and Context::get methods to allow easy extraction of values from the context by key (#1318)partial-eval experimental feature, added PartialResponse::reauthorize_with_bindings to accept substitutions from an iterator and deprecated PartialResponse::reauthorize (#1387)partial-eval experimental feature, added RequestBuild::unknown_principal_with_type and RequestBuild::unknown_resource_with_type methods, allowing an unknown principal or resource to be constrained to a certain entity type (#1391)Clone implementations for more types (#1324)/ and :) (#1336, resolving #621)miette::Reports derived from these errors are self-contained (#1351, resolving #977 and #1335)Fixed parsing of small negative decimal literals.
Cedar Language version: 4.1
The error associated with parsing a non-existent extension function additionally includes a suggestion based on available extension functions (#1280,
Cedar Language version: 4.1
Fixes a minor issues preventing documentation from building on docs.rs
Cedar Language version: 4.1
Added sub_entity_literals API (#1233).
Cedar Language version: 4.1
sub_entity_literals API (#1233).@my_annotation as
short-hand for @my_annotation("") (#1231, resolving #1031).entity-tags feature flag. That functionality is now available
without the feature flag.Action:: has been defined (#1258, resolving #166)Fixed parsing of small negative decimal literals.
Cedar Language Version: 4.0
Added get_entity_literals API (#1149).
Cedar Language Version: 4.0
get_entity_literals API (#1149).entity-tags (#1204, #1207, #1213, #1218)Nothing published for this version
Finalized the ffi module and cedar-wasm crate which were preview-released in 3.2.0. This involved API breaking changes in both. See #757 and #854.
Cedar Language Version: 4.0
EntityOrCommon representing a
typename that can resolve to either an entity or common type, matching the
behavior of typenames written in the human-readable (Cedar) syntax. (#1060, as
part of resolving #579)__cedar (e.g., __cedar, A::__cedar, __cedar::A, and
A::__cedar::B) are now invalid. (#969)Request::new has changed to remove the Options
around the entity type arguments. See RFC 55.Schema::from_str_natural to Schema::from_cedarschema_str.
Moreover, the FromStr implementations of Schema and SchemaFragment
now parse strings in the Cedar schema format. Use Schema::from_json_str and SchemaFragment::from_json_str
to parse strings in the JSON schema format.ffi module and cedar-wasm crate which were preview-released
in 3.2.0. This involved API breaking changes in both. See #757 and #854.Bool, Boolean, Entity, Extension, Long, Record, Set,
and String as common type names. (#1150, resolving #1139)Policy::parse and Template::parse to accept an Option<PolicyId>
instead of Option<String> to set the policy id (#1055, resolving #1049)PolicySet::template_annotation now returns Option<&str> as opposed to
Option<String> in the previous version (#1131, resolving #1116)<PolicyId as FromStr>::Err to Infallible (#588, resolving #551)non_exhaustive,
allowing future variants to be added without a breaking change. (#1137, #1169)cedar-policy crate. It is now
in an internal crate, allowing us to make semver incompatible changes. (#857)frontend module in favor of the new ffi module
introduced in 3.2.0. See #757.ParseErrors::errors_as_strings. Callers should consider examining
the rich data provided by miette::Diagnostic, for instance .help() and
labels(). Callers can continue using the same behavior by calling
.iter().map(ToString::to_string). (#882, resolving #543)ParseError::primary_source_span. Callers should use the location
information provided by miette::Diagnostic via .labels() and
.source_code() instead. (#908)Display impl for EntityId in favor of explicit .escaped() and
.as_ref() for escaped and unescaped representations (respectively) of the
EntityId; see note there (#921, resolving #884)Release 3.4.3, available on crates.io
Release 3.4.3, available on crates.io
Cedar Language Version: 3.4
is Type in ?slot scope constraints. Loading a JSON format policy using principal is Type in ?resource or resource is Type in ?principal. (#2351)Fixed parsing of small negative decimal literals.
Cedar Language Version: 3.4
The schema format conversion method SchemaFragment::to_cedarschema will now return a name collision error when trying to convert a schema where any na
Cedar Language Version: 3.4
SchemaFragment::to_cedarschema will now
return a name collision error when trying to convert a schema where any
namespaced type name collides with an unqualified type. This avoids a
situation where format conversion could change the target of an entity type
reference. (#1212, resolving #1063) This does not change what schema are
accepted by the parsing functions for either format.Convenience methods num_of_policies() and num_of_templates() to see how many policies and templates a policy set has
Cedar Language Version: 3.4
num_of_policies() and num_of_templates() to see how
many policies and templates a policy set has (#1180)Entity is now Hash. The hash implementation compares the hash of
the entity UID (#1186)Entities::from_entities() will now correctly reject record
attributes with superfluous attributes. (#1177, resolving #1176)Fixed parsing of small negative decimal literals.
Cedar Language Version: 3.4
Added deprecation warnings to APIs that will be removed in the upcoming 4.0 release, as well as wrapper methods with the new names, where appropriate.…
Cedar Language Version: 3.4
::from_json_value/file/str and ::to_json for PolicySet. (#783,
resolving #549)Entitys as JSON (#924,
resolving #807)Context::into_iter to get the contents of a Context and Context::merge
to combine Contexts, returning an error on duplicate keys (#1027,
resolving #1013)||, &&, and conditional
expressions. if { foo : <unknown> }.foo then 1 + "hi" else false now
evaluates to if <unknown> then 1 + "hi" else false. (#874)error extension function, which was previously used during
partial evaluation. (#874)Template parsing functions (e.g., Template::parse()) will now fail when
passed a static policy as input. Use the Policy parsing functions instead.
(#1108, resolving #1095)Fixed parsing of small negative decimal literals.
Cedar Language Version: 3.3
_Note:_ 3.2.2 and 3.2.3 skipped to maintain consistency with the cedar-wasm package
Cedar Language Version: 3.3
Note: 3.2.2 and 3.2.3 skipped to maintain consistency with the cedar-wasm package
unknown() is no longer a valid extension function if partial-eval
is not enabled as a feature. (#1101, resolving #1096)Fixed policy formatter dropping newlines in string literals. (#870, #910, resolving #862)
Cedar Language Version: 3.3
ffi::AuthorizationCall to remove
unsupported string option (#939)This should be considered a preview-release of ffi; more API breaking changes are anticipated for Cedar 4.0.
Cedar Language Version: 3.3
Expression::new_ip, Expression::new_decimal, RestrictedExpression::new_ip,
and RestrictedExpression::new_decimal (#661, resolving #659)Entities::into_iter (#713, resolving #680)Entity::into_inner (#685, resolving #636)ffi module with an improved FFI interface. This will replace the
frontend module in the 4.0 release, but is available now for early adopters;
the frontend module is now deprecated.
This should be considered a preview-release of ffi; more API breaking
changes are anticipated for Cedar 4.0. (#852)wasm Cargo feature for targeting Wasm (and the cedar-wasm crate was added
to this repo).
This should be considered a preview-release of cedar-wasm; more API
breaking changes are anticipated for Cedar 4.0. (#858)if, ==, contains, containsAll, and containsAny expressions. (#809, resolving #346)TypeErrorKind::ImpossiblePolicy in favor of warning
ValidationWarningKind::ImpossiblePolicy so future improvements to Cedar
typing precision will not result in breaking changes. (#716, resolving #539)partial-eval experimental feature (#714, #817, #838).frontend module in favor of the new ffi module. The
frontend module will be removed from cedar-policy in the next major version.
See notes above about ffi. (#852)cedar-policy crate in the next major version. (#707)action == ?action no longer suggests that action == [...] would be a
valid scope constraint. (#818, resolving #563)Fixed parsing of small negative decimal literals.
Cedar Language Version: 3.2
The formatter will now fail with an error if it changes a policy's semantics.
Cedar Language Version: 3.2
Improve parser errors on unexpected tokens. (#698, partially resolving #176)
Cedar Language Version: 3.2
null occurs in entity json data. (#751,
resolving #530)found template slot in a when clause.
(#758, resolving #736)Display implementation for Cedar schemas, both JSON and human
syntax. (#780)Implement RFC 57: policies can now include multiplication of arbitrary expressions, not just multiplication of an expression and a constant.
Cedar Language Version: 3.2
ValidationResult methods validation_errors and validation_warnings, along with confusable_string_checker, now return iterators with static lifetimes i
Cedar Language Version: 3.1
ValidationResult methods validation_errors and validation_warnings, along with
confusable_string_checker, now return iterators with static lifetimes instead of
custom lifetimes, fixing build for latest nightly Rust. (#712)in operator to no longer reports an error when comparing actions
in different namespaces. (#704, resolving #642)Implementation of the human-readable schema format proposed in RFC 24. New public APIs SchemaFragment::from_*_natural, SchemaFragment::as_natural, and
Cedar Language Version: 3.1
SchemaFragment::from_*_natural,
SchemaFragment::as_natural, and Schema::from_*_natural (#557)PolicyId::new() (#587, resolving #551)EntityId::new() (#583, resolving #553)AsRef<str> implementation for PolicyId (#504, resolving #503)Policy::template_links() to retrieve the linked values for a
template-linked policy (#515, resolving #489)AuthorizationError::id() to get the id of the policy associated with an
authorization error (#589)partial-eval experimental feature: added
Authorizer::evaluate_policies_partial() (#593, resolving #474)partial-eval experimental feature: added
json_is_authorized_partial() (#571, resolving #570)miette for various error types. If you have
previously been just using the Display trait to get the error message from a
Cedar error type, you may want to consider also examining other data provided
by the miette::Diagnostic trait, for instance .help().
Alternately, you can use miette and its fancy feature to format the error
and all associated information in a pretty human-readable format or as JSON.
For more details, see miette's
documentation. (#477)if, has, and true are now allowed as policy
annotation keys. (#634, resolving #623)ValidationResult returned from Validator::validate now has a static
lifetime, allowing it to be used in more contexts. The lifetime parameter
will be removed in a future major version. (#512)is expressions. (#491, resolving #409)SchemaError::UndeclaredCommonTypes to report
fully qualified type names. (#652, resolving #580)partial-eval experimental feature: make the return values of
RequestBuilder's principal, action, resource, context and
schema functions #[must_use]. (#502)partial-eval experimental feature: make RequestBuilder::schema
return a RequestBuilder<&Schema> so the RequestBuilder<&Schema>::build
method checks the request against the schema provided and the
RequestBuilder<UnsetSchema>::build method becomes infallible. (#591,
resolving #559)permissive-validate experimental feature: X in [] is typed False
for all X, including unspecified X. (#615)foo::principal is an error and is not parsed as
principal. Variables qualified by a namespace of any size comprised entirely
of Cedar keywords are correctly rejected. E.g., if::then::else::principal is
an error. (#594 and #597)is expression may be an identifier shared
with a builtin variable. E.g., ... is principal and ... is action are now
accepted by the Cedar parser. (#595, resolving #558)i64::MIN can now be properly converted to
the JSON policy format. (#601, resolving #596)Policy::to_json does not error on policies containing special identifiers
such as principal, then, and true. (#628, resolving #604)Template::from_json errors when there are slots in template conditions.
(#626, resolving #606)Fixed parsing of small negative decimal literals.
Cedar Language Version: 3.0
Possible panic (when stack size limit reached) in Context::empty() (#524, fixed by #526)
Cedar Language Version: 3.0
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
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)Fixed parsing of small negative decimal literals.
Cedar Language Version: 2.2
Convenience methods num_of_policies() and num_of_templates() to see how many policies and templates a policy set has
Cedar Language Version: 2.2
num_of_policies() and num_of_templates() to see how
many policies and templates a policy set has (#1180)Fixed parsing of small negative decimal literals.
Cedar Language Version: 2.2
Fixed policy formatter reordering some comments around if-then-else and entity identifier expressions. (#861, resolving #787)
Cedar Language Version: 2.2
The formatter will now fail with an error if it changes a policy's semantics.
Cedar Language Version: 2.2
Implement RFC 57: policies can now include multiplication of arbitrary expressions, not just multiplication of an expression and a constant.
Cedar Language Version: 2.2
Your coding agent can read these notes before it upgrades. Set up the MCP server →