$ the-wire · showcase
WorkflowAgent gets signed approvals, Vercel's Python hooks become conflict-aware
By RepoJournal · Filed · About Vercel
WorkflowAgent now signs and verifies tool approvals inside durable steps, Vercel's Python workflow client can detect conflicting hook tokens, and vercel/ai consolidated security-sensitive bridge logic.
WorkflowAgent in vercel/ai now supports workflow-safe signed tool approvals via the constructor- and stream-level `experimental_toolApprovalSecret`, which uses an environment-variable reference and binds signatures to approval and tool-call details so client-supplied message history cannot forge or alter approvals [1]. Bridge-backed harness adapters in vercel/ai gained shared `createBridgeToken()` and `withBridgeToken()` helpers, replacing duplicated security-sensitive logic across Codex, Claude Code, OpenCode, DeepAgents, and ACP, and enforcement is included [2]. A follow-up adds `createReadBridgeAsset()` to centralize bridge asset resolution across the same adapters [3]. In vercel/vercel-py, `await hook` now raises `HookDisposedError` instead of returning `None` when a hook is disposed, and the new `HookEvent.get_conflict()` API lets a workflow check whether a hook token is already in use, returning either `None` on successful registration or the owning `Run` on conflict [4][5]. Vercel's workflow core now overlaps workflow compilation with replay loading and prepares replay payloads as event frames arrive, skipping Node-specific work for QuickJS [6][7]. `resumeHook()` in vercel/workflow is now durable before it resolves, writing the `hook_received` event to the event log before publishing the workflow wake [8].
Action items
- → Update vercel/ai consumers of WorkflowAgent to set experimental_toolApprovalSecret and re-test approvals vercel/ai [plan]
- → Prepare for vercel/vercel-py breaking change: catch HookDisposedError from await hook vercel/vercel-py [plan]
- → Review new vercel/vercel-py HookEvent.get_conflict() for hook-token registration workflows vercel/vercel-py [monitor]
References
- [1] feat: add workflow-safe signed tool approvals to WorkflowAgent (#19976) ↗ vercel/ai
- [2] feat(harness): add `createBridgeToken()` and `withBridgeToken()` helpers for bridge backed harness adapters (#20027) ↗ vercel/ai
- [3] feat(harness): add reusable `createReadBridgeAsset()` helper function ↗ vercel/ai
- [4] workflow: make `await hook` never return `None` (#353) ↗ vercel/vercel-py
- [5] workflow: add hook conflict inspection ↗ vercel/vercel-py
- [6] [core] Prepare replay payloads as event frames arrive ↗ vercel/workflow
- [7] [core] Overlap workflow compilation with replay loading ↗ vercel/workflow
- [8] Durable hook resume: write, then wake ↗ vercel/workflow