Experiential

Latest version: v0.7.56

Safety actively analyzes 1006753 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 12

0.7.56

Accept an empty `additional_tools` input item: Codex's Apps integration ships `tools: []` when the connected app exposes no tools, and the gateway answered every such turn with `400 Invalid value for 'input.0.tools'` while the provider accepts the shape (859, live capture 2026-09-07). The item stays shallowly validated and forwards byte-for-byte; the native crate is unchanged (exp-gateway-native 0.3.47).

0.7.55

Forward the hosted cache_sample_gate through NativeControlPlane.__init__ to the attempt accounting registry (858), completing 849's promo-funded EWMA exclusion: released 0.7.53/0.7.54 declared the gate on NativeAttemptAccounting but the hosted composition (which builds only the control plane) could never reach it. Pure-Python one-kwarg fix with an end-to-end regression test proving a gate passed at the control-plane boundary is consulted exactly once with the settled attempt's ledger id. Native crate unchanged (0.3.47 rides main). Full suite 3,988 passed.

0.7.54

0.7.53

Adaptive per-rung rate limiting and cache-priority fair share for the gateway (849): five new optional `GatewayRungDispatchPolicy` fields (`requests_per_minute`, `tokens_per_minute`, `cache_priority_alpha`, `fresh_session_spill_fraction`, `sticky_spill_seconds`, all inert until authored, no snapshot schema bump) drive sliding-window rate sheds that spill sideways before a provider 429s, AIMD-learned throttle ceilings calibrated passively from live traffic, a congestion-scaled cached-fraction EWMA on fair-share weights (with an injectable `cache_sample_gate` for the hosted store's promo exclusion), Retry-After-sized throttle windows clamped [5s, 6h], fresh-session-only early spill, and worker-local sticky spill bindings honored ahead of rendezvous order. Ships exp-gateway-native 0.3.46, which harvests a closed nine-header rate-limit allowlist (`retry-after`, `x-ratelimit-*`, `anthropic-ratelimit-*`) into settlement payloads for per-attempt ledger persistence (SQLite migration 18). Evidence: full suite 3,984 passed and cargo gates green on the merged head; xhigh adversarial review applied three hardening fixes (bounded header integers, once-per-ladder token serialization, EWMA storage split) each with pinning tests.

0.7.52

Allow a trusted custom origin for native provider dialects: new opt-in ConnectionConfig.trusted_custom_origin routes a native provider (anthropic/openai/gemini/openrouter) through a customer-run https endpoint via base_url in its own wire dialect — a reseller that speaks the Anthropic Messages API serves claude-* with the native response shape — while the fixed-origin default and guard stay in force for every case that does not set the flag. The flag requires a native provider + an explicit https base_url, round-trips through the gateway SQLite persistence (migration 18) and CLI setup reuse, and joins the connection identity digest only when set (existing digests unchanged). Pure Python; native crate unchanged (0.3.45).

0.7.51

Engine error-clarity batch 7 (native 0.3.45) plus the prefill follow-up:

- A 404 for a caller's dangling `item_reference` or `conversation` is now the caller's 400 carrying the provider's sentence, instead of a lane "deployment not found" that failed over across the whole ladder (851).
- Provider-side handles in error sentences are masked as `[redacted]` and the sentence is relayed, instead of the whole sentence being dropped to "verify the request fields" (851).
- Replayed Responses items carrying foreign `item_` ids are repaired for the OpenAI wire (851).
- The Anthropic assistant-prefill pre-check keys on the Claude release, so relayed Claude rungs are covered (850).

Page 1 of 12

© 2026 Safety CLI Cybersecurity Inc. All Rights Reserved.