Common Expression Language
The Common Expression Language (CEL) is a non-Turing complete language designed
for simplicity, speed, safety, and portability. CEL s C-like syntax looks
nearly identical to equivalent expressions in C++, Go, Java, and TypeScript.
// Check whether a resource name starts with a group name.
resource.name.startsWith( /groups/ + auth.claims.group)
// Determine whether the request is in the permitted time window.
request.time - resource.age duration( 24h )
// Check whether all resource names in a list match a given filter.
auth.claims.email verified && resources.all(r, r.startsWith(auth.claims.email))
A CEL program is a single expression. The examples have been tagged as
Common Expression Language
The Common Expression Language (CEL) implements common semantics for expression
evaluation, enabling different applications to more easily interoperate.
Key Applications
Security policy: organization have complex infrastructure and need common
tooling to reason about the system as a whole
Protocols: expressions are a useful data type and require interoperability
across programming languages and platforms.
Guiding philosophy:
Keep it small & fast.
CEL evaluates in linear time, is mutation free, and not Turing-complete.
This limitation is a feature of the language design, which allows the
implementation to evaluate orders of magnitude faster than equivalently
sandboxed JavaScript.
Make it extensible.
CEL is designed to be embedded in applications, and allows for