Actors
An actor is a string: whatever identifies a principal in your system. A user id, a service account, a tenant. The harness never sees a password, a session cookie or an email; it sees an opaque name and enforces what that name may do.Permissions
A workspace names who may work in it, where, and how:
An actor not in the list cannot run a command at all.
BashTool checks this on every
execution, before a sandbox is even acquired.
Sessions
A session is one actor’s conversation in one workspace, in one mode:Isolation
Each command runs in a sandbox hydrated from that workspace. There is no path from one sandbox to another workspace’s files, and the provider refuses a path that tries to leave the workspace rather than normalising it. The agent will not run a model’s commands on a provider that does not isolate.Approvals
The approval policy reviews a command’s effects — the files it changed, the connectors it called — after the command ran in its sandbox and before anything is committed:ask ends the turn needs_continuation and emits approval_required with the effects. Your
UI shows them to a person; their decision comes back through agent.resume(), and it is
recorded with who decided. The effects are staged at review time, so a decision can take a
day and still commit cleanly.
The policy’s job is your rules — a plan tier, a repository’s protection level, a customer’s
settings. The harness enforces isolation and scope before the policy runs and does not ask it
about them.
Questions
A model can callask_user. That, too, ends the turn needs_continuation, with the questions
in the event; the answers come back through resume. Nothing blocks waiting.