Open Policy Agent (OPA)
v1.20.0SecurityAug 27, 2026
This release adds opt-in Rego language capabilities and coverage tooling while tightening remote schema fetching. It also includes correctness and performance improvements without broad mandatory migration work.
Action needed (1)
breaking
allow_netrestriction on remote JSON Schema$reffetchingIn OPA v1.20.0,
allow_netrestricts remote JSON Schema$reffetching fromjson.andmatch_schema json..verify_schema
All 50 other recorded changesvalue changes 24 · fixes 18 · additions 8
value changes (24)
- Converge object comprehension layout
- Don't group rules that aren't written on one line
- Don't unwrap one-line rule body braces from a single set term
- Honor line breaks before explicit
and/oroperand bodies - Keep parens around a nested
notoperand - Wrap set union
|infix in parens when output would be re-interpreted as comprehension - Write added imports before rules
- Avoid predictable OCI temp store
- Decouple decision logging from request context cancellation
- Name the enclosing rule in unsafe var errors on shared lines
- Print undeclared var names
- A few tracing/profiling improvements
- Bump the build toolchain to Go 1.27, and the
go.language version to 1.26mod - Bump github.com/dgraph-io/badger/v4 from 4.9.4 to 4.9.5
- Bump github.com/prometheus/client_golang from 1.24.0 to 1.24.1
- Bump go.opentelemetry.io/proto/otlp from 1.10.0 to 1.11.0
- Not-covered ranges are now tagged with a
Kind—index_excludedorearly_exit - Add list of unplanned rules to plan data
- Save enumerated refs over unknown data
- Speed up partial evaluation of dynamically composed policies
- Treat an empty JSON Schema
enumas unsatisfiable - Allocate less in
ast.NewObject - Heap allocation hunting
- Improved UUID implementation
fixes (18)
- Fix roots containing percent-encoded characters
- Validate plan-addons exist
- Fix loading absolute paths on Windows
- Fix overly verbose return of errors
- Address regression causing memory corruption
- Correct regression in Ruleset Add
- Don't index away rules with a nested
printcall - Don't leak generated locals for calls in ref type errors
- Don't leak generated locals in ref type errors
- Don't report type errors for documents replaced by
with - Don't yield a key in both base and virtual docs twice
- Error on built-in calls with unevaluated operands
- Fix false modulo by zero for multiples of 2^64
- Fix negation inlining limit overflowing
- Fix sum overflow when integer elements fit int64 but the sum does not
- Fix performance regression in
InterfaceToValue - Fix
future.wildcard import not including thekeywords notkeyword - Fix panic for shadowed root document calls in Rego v0
additions (8)
- Rego gains two keywords for combining conditions inside a single rule body
- the new
--coverage-runsflag onopa evalandopa testselects which of them to run - Add support for formatting
and/orlogical expressions - Support
and/orlogical keywords - Add support for
and/orimports - Allow interactive ref head rule definitions
- Allow configuring variable value length limit
- Allow registering hooks, and pass them to discovery
Add Open Policy Agent (OPA) to your stack
A weekly email arrives when a release needs action. Like the breaking changes in this release.