Skip to content

Cast

v0.3.0 Breaking

This release includes 2 breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

agent-orchestration agents ai anthropic claude containers
+4 more
llm mcp multi-agent self-hosted

Affected surfaces

auth rbac breaking_upgrade

ReleasePort's take

Moderate signal
editorial:auto 12d

Pairing is removed and the acl.json schema now uses `allowed` instead of `peers`; strict validation enforces this change. Un‑migrated v0.2.0 installations will fail to load.

Why it matters: Affects all deployments using the previous access model; version 0.2.0 configs must be migrated before upgrade or the system will not start.

Summary

AI summary

Updates Access model, Breaking changes, and MCP transport reliability across a mixed release.

Changes in this release

Breaking High

Pairing removed; acl.json schema changed (peers → allowed) and now strict(); un-migrated 0.2.0 installs will not load.

Pairing removed; acl.json schema changed (peers → allowed) and now strict(); un-migrated 0.2.0 installs will not load.

Source: llm_adapter@2026-07-15

Confidence: high

Breaking High

`h` permission bit removed from vocabulary.

`h` permission bit removed from vocabulary.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Access model now uses a single ACL store (`acl.json`) with allowed/rejected polarity and three‑state gate (granted, rejected, askable).

Access model now uses a single ACL store (`acl.json`) with allowed/rejected polarity and three‑state gate (granted, rejected, askable).

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Reactive first contact: unknown sender's first message is held and raised for owner approval, creating a standing grant.

Reactive first contact: unknown sender's first message is held and raised for owner approval, creating a standing grant.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Cross‑agent edges now form via owner‑directed approval for askable denials, allowing the org map to grow dynamically.

Cross‑agent edges now form via owner‑directed approval for askable denials, allowing the org map to grow dynamically.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

Owner claims bound through verification loop; operator sentinel as fallback.

Owner claims bound through verification loop; operator sentinel as fallback.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Medium

`request__list` now defaults to open requests (outbox model) with status filter for history.

`request__list` now defaults to open requests (outbox model) with status filter for history.

Source: llm_adapter@2026-07-15

Confidence: high

Performance Medium

MCP transport gains per‑conversation socket nonce, preventing superseded runner teardown from unlinking live sockets.

MCP transport gains per‑conversation socket nonce, preventing superseded runner teardown from unlinking live sockets.

Source: llm_adapter@2026-07-15

Confidence: high

Performance Medium

In‑container proxy recovers with write‑safe retry and 15‑second call timeout; SSE keepalive added to every session.

In‑container proxy recovers with write‑safe retry and 15‑second call timeout; SSE keepalive added to every session.

Source: llm_adapter@2026-07-15

Confidence: high

Bugfix Medium

Cold‑spawn inbound messages now recorded in `message_log`, closing audit gap on first message of each conversation.

Cold‑spawn inbound messages now recorded in `message_log`, closing audit gap on first message of each conversation.

Source: llm_adapter@2026-07-15

Confidence: high

Full changelog

Access stops being a map you draw up front. In 0.3.0 the connections between
people and agents form at runtime: an unknown sender's first message is held,
the agent's owner approves it, and the edge exists. The org chart grows one
approved connection at a time instead of being wired ahead. The story behind it:
a living org chart for agents.

Access model

  • Single ACL store. Pairing is gone; acl.json is the one grant map, with an
    allowed / rejected polarity pair and an origin-keyed, three-state gate
    (granted / rejected / askable). The separate paired-users.json store is retired.
  • Reactive first contact. An unknown sender's first message is held and
    raised to the agent's owner as an approval, with the message body in the card.
    Approving writes a standing grant; the Access tab lists and revokes them. Held
    senders see a pending notice; duplicates dedup, hammering goes quiet.
  • Cross-agent edges form the same way. An askable agent-to-agent denial raises
    an owner-directed approval, so the org map grows at need. Hand-authored grants
    still work when you already know two agents belong together.
  • Owner claims. A human owner is bound through a verification loop; owner
    identity anchors approval routing, with the operator sentinel as fallback.
  • Bit vocabulary. The h (host) bit is removed — a cross-agent push rides the
    carried user's own io grant. p returns as the framework-written
    push-containment edge. Agent peers stay restricted to q/r/a/p.

MCP transport reliability

  • Per-conversation socket paths gain a per-spawn nonce, so a superseded runner's
    teardown can no longer unlink the live runner's socket.
  • The in-container proxy recovers: transport reconnect with write-safe retry and a
    15s call timeout. Host-side SSE keepalive on every session.
  • Cold-spawn inbound messages are recorded in message_log, closing the audit gap
    on the first message of every conversation.

Runtime & tools

  • request__list defaults to open requests (outbox model) with a status filter for
    history.
  • Denial durability: framework corrections (blocked outbound previews) land in
    message_log as system rows, auditable after the fact.

Breaking changes

  • Pairing is removed and the acl.json schema changed (peersallowed,
    now .strict()); the per-agent approvals table and outbound_requests gained
    columns. An un-migrated 0.2.0 install will not load. Run the migration before
    starting 0.3.0.
  • The h permission bit is removed from the vocabulary.

Upgrading from 0.2.0

Stop the server, then run the idempotent scripts in
scripts/migrations/0.2-to-0.3/ — dry-run by
default, --apply to write. Its README also covers extension-stored reply targets
and the manual blueprint-cleanup pass.

Install

git clone https://github.com/yaodub/cast
pnpm start

Still developer alpha — rough in places. If something breaks, tell me:
[email protected].

Breaking Changes

  • Removal of pairing mechanism and change of acl.json schema (peers → allowed, now .strict()); un‑migrated 0.2.0 installs will fail to load; migration script required.
  • Removal of the `h` permission bit from the access vocabulary.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Cast

Get notified when new releases ship.

Sign up free

Related context

Beta — feedback welcome: [email protected]