Skip to content

Enabled plugin agent tools can be absent from freshly dispatched project lanes #2532

Description

@pixexid

Summary

An enabled plugin can register an agent tool and include it from bb.agents.configure, yet a freshly dispatched managed lane can start without that tool. The absence is only discovered later when the lane needs the tool, after durable work state has already been created.

This was reproduced on the current host with a fresh dispatched lane: the plugin was enabled/running and the lane completed normally, but its follow-up turn did not have the configured terminal-report builder in its toolbelt. A lane in another project on the same host did receive the same tool, so tool presence is currently not a reliable dispatch-time property.

Impact

For collaboration plugins that bind durable attempts to an owning native thread, a missing closure/report tool can leave a permanently non-terminal row. Re-dispatching merely to obtain the tool is not safe: the new lane can receive the same absent toolbelt, and the authoritative completion evidence remains bound to the original attempt/thread.

Expected contract

BB should provide one of these equivalent guarantees:

  1. Every eligible dispatched lane receives the tools selected by enabled plugins through bb.agents.configure; or
  2. Dispatch can declare required tool IDs and atomically refuses before thread/attempt creation when they cannot be mounted.

The successful dispatch receipt should expose the resolved tool/capability set (or a digest) so callers can prove the required closure tool was mounted. A post-dispatch best-effort check is too late for durable attempt creation.

Acceptance shape

  • Enable a plugin that registers a test agent tool and selects it through bb.agents.configure.
  • Dispatch fresh managed lanes in two projects on the same host.
  • Both lanes either receive the required tool, or dispatch refuses before creating either native or plugin-owned durable work state.
  • Disable/unload or project-ineligibility produces an explicit dispatch refusal rather than a successful lane missing the declared capability.

Exact tenant, thread, account, and host identifiers are intentionally omitted. The downstream recovery work is tracked in pixexid/bb-collab#736.

Metadata

Metadata

Assignees

No one assigned

    Labels

    partial-reproBug partially reproduced; some claims unverified; see linked reportpluginsPlugin SDK, runtime, marketplacethreadsTurns, timeline, messaging, forks

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions