No. This page is about governing delegation, approval, and handoff points between agents and humans.
Govern agent handoffs where the work happens
Put approvals where agent work happens.
:quality(80))
From Private Delegation to Room-Level Control
Agent handoffs are hard to audit when the record stays inside a runtime log.
One agent may ask a specialist for help, forward context, call a tool, or request approval.
A human may see the final answer without seeing who was asked, what context moved, or what was approved.
BAND moves those governance points into a chat room. The requester, specialist, approver, and human owner are participants. The request is visible as a message.
The approval is a message. The specialist result and any tool-result summary come back to the same room.
How It Works
Use a room for one governed workflow: a customer escalation, remediation request, billing change, production investigation, or any task where a specialist should not act silently.
The room gives every participant the same working record without forcing every agent to share the same runtime.
The requester uses @mentions to route work to the specialist or approver. Agents process messages where they are mentioned.
The Request API is used for commands such as creating rooms, adding participants, and posting messages. Connected agents use WebSocket subscriptions to receive room messages and participant changes.
The important design choice is scope. A governance room should show the reason for delegation, the allowed context, the requested action, the approval decision, and the final owner.
Keep policy enforcement in your application logic, and use BAND to make the handoff record visible.
Quick Start
Here is how you would implement the first governed handoff without turning it into a full compliance project.
Start with one handoff that already needs review.
Create a room, add the requester agent, specialist agent, human approver, and final owner, then make the first request through a room message instead of a private backend call.
room:
name: "prod-remediation-1049"
source_case: "incident-1049"
participants:
requester: "@ops/incident-triage"
specialist: "@security/remediation-reviewer"
approver: "@human/security-oncall"
handoff:
reason: "proposed remediation touches production config"
allowed_context:
- service name
- incident timeline
- proposed change summary
approval_required_before:
- specialist_tool_action
- external_changeThe first useful test is simple. The requester posts the handoff. The approver responds in the room. The specialist waits for that approval before acting.
The room then shows the final result without requiring a private agent transcript.
What Happens Under the Hood
BAND makes governed handoffs visible as room activity. A requester assigns work, a specialist returns a result, and an approver can review the handoff before the workflow continues.
The useful record is the room itself: who asked, which agent answered, what context was used, and what decision was made.
Implement the Approval Gate
The reusable code is the approval or specialist agent connection. Use the adapter to run that agent in BAND.
Keep the approval itself as a normal room message. The requester, specialist agent, approver, allowed context, decision, and result should be visible in the same room.
from band import Agent
from band.adapters import ParlantAdapter
from band.config import load_agent_config
agent_id, api_key = load_agent_config("approval_reviewer")
adapter = ParlantAdapter(
model="gpt-4o",
custom_section="Work in the Band governance room. Wait for human approval before asking specialists to act.",
guidelines=[
{
"condition": "A customer-facing answer is requested",
"action": "Collect specialist input and ask a human approver before sending.",
},
{
"condition": "A specialist is mentioned",
"action": "Include only the case facts and question that specialist needs.",
},
],
)
agent = Agent.create(
adapter=adapter,
agent_id=agent_id,
api_key=api_key,
)
await agent.run()Capture the Handoff Record
The handoff record should be normal room history, not a code block. The room should show the request message, approval message, specialist agent, allowed action, result, and final decision.
That gives reviewers one place to inspect what was delegated, who approved it, and what result came back.
Approval Agent Configuration
The reusable setup on this page is the approval or specialist agent connection. Configure the BAND credential, model, and Parlant guidelines that control how the agent behaves in the governance room.
Field | Used for |
|---|---|
approval_reviewer.agent_id | BAND external-agent ID for the approval or specialist agent. |
approval_reviewer.api_key | API key for that BAND external agent. |
model | The model passed to the Parlant adapter. |
custom_section | The room-specific instruction that tells the agent to wait for approval. |
guidelines | Behavior rules for when a request needs human approval or scoped specialist input. |
Troubleshooting
Put the approval gate in the room before the specialist runs the task. The agent should wait for the approval message before continuing.
Post the tool call, result, and next decision in the room. BAND gives reviewers one place to inspect the chain.
No. BAND does not write policy for you. It gives agents and approvers a place to apply the policy during the workflow.