bdjgs
09/10/2025, 7:32 AMPrasenjit Roy
09/12/2025, 6:36 AMAlex Shuraits
09/18/2025, 8:22 AMNishanth Mathew Joy
09/22/2025, 1:28 PMShyamalan Chemmery
09/24/2025, 7:33 AMNishanth Mathew Joy
09/24/2025, 7:59 PMNishanth Mathew Joy
09/25/2025, 4:07 PMNishanth Mathew Joy
09/26/2025, 12:16 PMMaxime B.
10/01/2025, 1:23 PMChristopher McMahon
10/03/2025, 6:54 AMChristopher McMahon
10/03/2025, 6:57 AMChristopher McMahon
10/07/2025, 6:22 AMNishanth Mathew Joy
10/08/2025, 2:12 PMPrasenjit Roy
10/14/2025, 10:49 AMMichał Wójcik
10/15/2025, 9:52 AM2025-10-15T09:25:08.891982+0000 | opal_client.policy.updater | INFO | Received policy update: topic=d7c2f5d674f54f82a21b401cf5190d32:policy:., message={'old_policy_hash': '9ed9fb1d2c4defae9d020e36f3c8510aa2930464', 'new_policy_hash': '7a919fe931c2403e183b134187a28abd8a8878d4', 'changed_directories': ['.', 'permit', 'permit/generated', 'permit/generated/conditionset']}
2025-10-15T09:25:08.892246+0000 | opal_client.policy.updater | INFO | Refetching policy code (delta bundle), base hash: '9ed9fb1d2c4defae9d020e36f3c8510aa2930464'
2025-10-15T09:25:08.892655+0000 | opal_client.policy.fetcher | INFO | Fetching policy bundle from <https://opal-v2.permit.io/scopes/d7c2f5d674f54f82a21b401cf5190d32/policy>
2025-10-15T09:25:10.461838+0000 | uvicorn.protocols.http.httptools_impl | INFO | 127.0.0.1:37394 - "GET /healthy HTTP/1.1" 200
2025-10-15T09:25:11.840135+0000 | opal_client.policy.fetcher | INFO | Fetched valid bundle, id: 7a919fe931c2403e183b134187a28abd8a8878d4
2025-10-15T09:25:11.841801+0000 | opal_client.policy.updater | INFO | got policy bundle (delta): '9ed9fb1d2c4defae9d020e36f3c8510aa2930464' -> '7a919fe931c2403e183b134187a28abd8a8878d4', manifest: ['permit/generated/conditionset/Large_5fquantity.rego'], deleted: None
2025-10-15T09:25:11.847489+0000 | opal_client.engine.logger | INFO | Received request. PUT /v1/policies/permit/generated/conditionset/Large_5fquantity.rego
2025-10-15T09:25:11.994635+0000 | opal_client.engine.logger | INFO | Sent response. PUT /v1/policies/permit/generated/conditionset/Large_5fquantity.rego -> 200
Any thoughts? Screenshot from activity logs for the condition change (there is my local time so 9:20 utc)JT Wheeler
10/16/2025, 3:24 PMHttpFetchProvider from an API. Is there a working example of using the HttpFetchProvider for a POST request that includes a request body? I've tried a number of things, but every time I try to include a request body, it appears the HttpFetcherProvider doesn't even attempt to make a call out to the configured endpoint. For example, I have this set in OPAL_DATA_CONFIG_SOURCES in the permitio/opal-server:latest container I have running locally:
{
"config": {
"entries": [
{
"url": "<http://myapi:8080/v1/path>",
"config": {
"fetcher": "HttpFetchProvider",
"method": "post",
"data": {
"blah": "blah"
}
},
"topics": [
"blah"
],
"dst_path": "blah"
}
]
}
}
This results in a aiohttp.client_exceptions.ClientResponseError: 400, message='Bad Request', url='<http://myapi:8080/v1/path> in the permitio/opal-client-standalone:latest container I have running locally, and with a ERROR | Timeout while fetching url: <http://openfga:8080/stores/01K7MTJYKRN6V5TQ1WT8D83QDQ/list-user> error. The logs from the app running at <http://myapi:8080> don't seem to indicate that the request made it to my app. However, if I remove config.data from the configuration, the logs from my app do indicate the request was received. My app responds with a 400 in this case because the request body is required, but it at least proves the request has been received.
I will admit it is confusing that the OPAL client indicates a 400 was received from the API when config.data is included but, my app logs don't indicate the request was received.Elijah Bassey
10/20/2025, 6:26 PM2025-10-20T18:21:45.449442+0000 | fastapi_websocket_rpc.websocket_rpc_c...| INFO | RPC Connection failed - [Errno -5] Name has no usable address
2025-10-20T18:21:46.391887+0000 | opal_client.policy_store.opa_client |WARNING | OPA client health: False (policy: False, data: False)
2025-10-20T18:21:46.392485+0000 | uvicorn.protocols.http.httptools_impl | INFO | 127.0.0.1:45740 - "GET /healthy HTTP/1.1" 503
2025-10-20T18:21:47.785723+0000 | opal_client.policy_store.opa_client |WARNING | OPA client health: False (policy: False, data: False)
2025-10-20T18:21:47.786254+0000 | uvicorn.protocols.http.httptools_impl | INFO | 127.0.0.1:45744 - "GET /healthy HTTP/1.1" 503
[2025-10-20T18:21:47Z INFO pdp_server::api::health::handlers] Health check failed: horizon: Horizon returned status 503 Service Unavailable
2025-10-20T18:21:47.786688+0000 | opal_client.engine.logger | INFO | Received request. GET /health
2025-10-20T18:21:47.787123+0000 | opal_client.engine.logger | INFO | Sent response. GET /health -> 200
2025-10-20T18:21:51.391099+0000 | opal_client.policy_store.opa_client |WARNING | OPA client health: False (policy: False, data: False)
2025-10-20T18:21:51.391510+0000 | uvicorn.protocols.http.httptools_impl | INFO | 127.0.0.1:45740 - "GET /healthy HTTP/1.1" 503
2025-10-20T18:21:52.716743+0000 | fastapi_websocket_rpc.websocket_rpc_c...| INFO | Trying server - <wss://opal.permit.io/ws>
2025-10-20T18:21:52.736808+0000 | fastapi_websocket_rpc.websocket_rpc_c...| INFO | RPC Connection failed - [Errno -5] Name has no usable address
2025-10-20T18:21:53.071268+0000 | fastapi_websocket_rpc.websocket_rpc_c...| INFO | Trying server - <wss://opal.permit.io/ws>
2025-10-20T18:21:53.097005+0000 | fastapi_websocket_rpc.websocket_rpc_c...| INFO | RPC Connection failed - [Errno -5] Name has no usable address
2025-10-20T18:21:54.619022+0000 | fastapi_websocket_rpc.websocket_rpc_c...| INFO | Trying server - <wss://opal.permit.io/ws>
2025-10-20T18:21:54.640207+0000 | fastapi_websocket_rpc.websocket_rpc_c...| INFO | RPC Connection failed - [Errno -5] Name has no usable address
2025-10-20T18:21:55.982693+0000 | opal_client.policy_store.opa_client |WARNING | OPA client health: False (policy: False, data: False)
2025-10-20T18:21:55.983169+0000 | uvicorn.protocols.http.httptools_impl | INFO | 127.0.0.1:51108 - "GET /healthy HTTP/1.1" 503
[2025-10-20T18:21:55Z INFO pdp_server::api::health::handlers] Health check failed: horizon: Horizon returned status 503 Service Unavailablekevin
10/22/2025, 8:18 AMItamar Shpak
10/22/2025, 11:52 AMDan
10/22/2025, 1:59 PMkevin
10/23/2025, 8:05 AMJaieu Sheil
11/10/2025, 6:19 PM- OPAL_INLINE_OPA_CONFIG={"decision_logs":{"console":true},"plugins":{"decision_logs":{"reporting":{"min_delay_seconds":1,"max_delay_seconds":5}}},"default_decision_id_enabled":true,"default_authorization_decision_id_enabled":true}Tony Ou
11/18/2025, 12:20 AMAndrea Di Saverio
11/18/2025, 4:01 PMNishanth Mathew Joy
11/19/2025, 11:12 AMTony Ou
11/24/2025, 9:14 AMBartosz Wasilewski
11/26/2025, 8:31 AMOPAL_OPA_V0_COMPAT=true) as recommended
3. Then disabled compatibility mode (OPAL_OPA_V0_COMPAT=false) to test breaking changes
4. Expected our policies to fail (since we didn't add .v1 to package names)
What actually happened: Everything continues to work perfectly, even with compatibility mode disabled.
Here's our policy structure:
package data.role # No .v1 suffix - should this fail in strict v1 mode?
import rego.v1
import data.utils.v1.functions.jwt as functions_jwt
import data.utils.v1.roles as roles
default allow := false
allow if {
functions_jwt.user_has_role(roles.admin)
input.action == "get-roles"
}
According to the migration guide, without .v1 suffix and with compatibility mode disabled, this should fail. But it doesn't.
My questions:
1. Is import rego.v1 now sufficient for v1 compatibility, making the package .v1 suffix optional?
2. Has something changed in OPAL 0.9.0 that we're not aware of?
3. Are we possibly misunderstanding how compatibility mode works?
We want to ensure we're not missing something important before rolling this out to other environments.
Thanks for any insights!Dai Zhang
11/28/2025, 7:53 AMsystem.rego file like below to limit the url.
# system.rego
allow if {
input.method == "POST"
input.path == ["v1", "data", "token"]
}
however, this would block the data update for that url. we know that the best benefit would be real-time data update in opal. so would there be any problem to trigger using curl --request POST '<https://opa.xxx.xxx/data/config>' . great thanks!Nishanth Mathew Joy
12/08/2025, 10:02 AMNishanth Mathew Joy
12/08/2025, 10:03 AM