errandRun a coding agent from a chat channel, in a sandbox it cannot escape.
source

Commands ​

Typed in a thread, or picked as a slash command: both run the same code, so what they do and who may do it cannot drift apart.

Anything else is a prompt for the agent. A message starting !!! is an aside: everyone in the thread sees it and the agent is never told.

The session ​

commandwho maywhat it does
!stopthe owner and operatorsend the session and close the thread
!interruptthe owner and operatorsabort the running turn
!steer <instruction>the owner and operatorsredirect the running turn
!then <prompt>the owner and whoever they invitedhold a prompt until the turn finishes
!pr [--repo <dir>] <title>the owner and operatorsopen a pull request for this branch
!compactthe owner and operatorssummarise the conversation to free context
!model [name]the owner and operatorsshow the models, or switch to one
!gen-image <prompt>the owner and whoever they inviteddraw with the image model
!gen-speech <text>the owner and whoever they invitedread aloud with the speech model
!grant [host] [time]the owner and operatorsgrant a host, or list them
!revoke <host>the owner and operatorsungrant a host

Who takes part ​

commandwho maywhat it does
!allow <user>the owner and operatorslet somebody take part in this thread
!deny <user>the owner and operatorswithdraw somebody from this thread
!gueststhe owner and whoever they invitedwho takes part in this thread
`!facts [@somebodyproject]`the owner and whoever they invited
`!forget <@somebodyproject>`the owner and operators

The project ​

commandwho maywhat it does
!ls [path]the owner and whoever they invitedlist a directory
!cat <path>the owner and whoever they invitedshow a file
!file <path>the owner and whoever they invitedupload a file
!pwdthe owner and whoever they invitedshow the project this session works in

You and the host ​

commandwho maywhat it does
!statusanyone permittedsession state and queue
!helpanyone permittedlist these commands
!usage [refresh]anyone permittedwhat is left of the provider's usage window
!models refreshthe owner and operatorsask the providers again for their models
!shutdownnamed accounts, answered by the daemonpower off this daemon's host