v2.1.1
- 2026-03-01
Patch release addressing tech debt and findings from the v2.1.0 Red-Team code review. Backward compatible with v2.1.0.
Security
- SEC-01 — JWT algorithm allowlist:
jose_jwt.decode()inauth/jwks.pyandauth/middleware.pynow restricts algorithms toEdDSA,RS256,ES256, preventing algorithm confusion attacks (RFC 8725 §3.2). - Delegation
audclaim: RFC 7519 allowsaudas an array;economics/delegation.pynow coerces list to first element instead of string repr. - Vercel AI router: SECURITY WARNING in docstring and optional
api_key_headerparameter for auth. - Frontend SSRF: Agent registration URL validation now resolves DNS and blocks private/loopback IPs (DNS rebinding protection).
Architecture & Concurrency
- ARCH-01 — SQLite async bridging:
state/stores/sqlite.pyexposessave_async,get_async,list_versions_async,delete_asyncusing aiosqlite directly, avoiding_run_syncand event-loop blocking under concurrent load. - CONC-01: Replaced
threading.Lockwithasyncio.Lockinauth/oidc.pyandauth/jwks.pyfor cache guards so the event loop is not blocked. - SQLite WAL mode:
journal_mode=WALandsynchronous=NORMALapplied when opening connections in snapshot store and economics storage for better concurrency. - Registry locks: GIL-atomic
dict.setdefault()for registry URL locks indiscovery/registry.py(removed threading guard).
Reliability & Limits
- Webhook dead letters: Capped at
MAX_DEAD_LETTERS(1000) to prevent unbounded memory growth. - ManifestCache: Background cleanup hook / periodic
cleanup_expired()documented and ensured for memory release. - InMemoryNonceStore: Cleanup probability increased; optional max-size fallback.
- Rate limiting: Optional Redis backend (
ASAP_RATE_LIMIT_BACKEND=redis://...) for shared limits across workers.
Code Quality
- echo_handler:
TaskRequest.model_validate(envelope.payload_dict)instead of**payload_dictso Pydantic validators run. - Registry: Empty-string coercion for
repository_url/documentation_url(strip then None). - SQLiteMeteringStorage:
_ensure_table_onceso schema is created once per instance. - Middleware docstring: Backlog reference updated (v2.1.1).
- Compression:
prefer_fast_compressionoption to prefer gzip over brotli for lower latency.
Technical Details
- Full Changelog: v2.1.0...v2.1.1
Full Changelog: v0.1.0...v2.1.1