Three gates, three failure modes
People collapse agent
safety into one sentence:
be careful. The last two
days of Copilot changelog
split that sentence into
three different machines.
Approval decides whether a
tool may be attempted.
Sandbox decides what it can
touch if it runs. Trace
decides whether you can see
the attempt after. They
fail in different places.
Fixing one does not fix
the other two.
Approval fails when the
class is unnamed. Assisted
approvals are useful only
after someone has written
which calls are low-risk.
Read, format, and a unit
test can be that list.
Delete, push, network, and
anything that reads a
credential cannot. If the
list is “everything except
the scary-sounding ones,”
you do not have a class.
You have a dialog that
still appears often enough
to train a click. A human
who approves the remaining
prompts in under a second
has not reviewed them. The
trace should show the
click. The sandbox should
have made the bad call a
no-op anyway.
Sandbox fails when it
degrades. The Copilot app’s
local sandbox is off until
you turn it on, scoped to
one project, and it errors
if the OS cannot enforce
the request. That error is
the feature. A policy that
runs unsandboxed “so the
agent can finish” has
already lost. Cloud
sessions, remote hosts, and
the CLI are separate
policies. Check the one
you think you configured,
then check the one the
session actually used.
Yesterday’s effort ceiling
was a spend gate. This is
a blast-radius gate. Both
belong in the harness,
before the model is asked
to be good.
Trace fails when the only
record is prose. OpenTelemetry
export from the Copilot app
can follow model requests
and tool use without
capturing prompt text.
Start there. A missing span
is a hole. A prompt archive
is a new secret store. When
a session goes wrong, rewind
the message and the files
together, and say so first.
The fixes after the message
you just replaced were the
work you un-asked. If a
hunk was worth keeping, it
needed a commit before the
rewind, not a plea after.
-
Write the low-risk list
before you enable assisted
approval. If delete is on
it, start over.
-
Turn local sandbox on for
one project. Confirm a
denied folder errors, and
that a machine which
cannot enforce also
errors.
-
Export traces with prompt
content off. Read one
session: model request,
tool name, outcome.
-
Treat app, CLI, cloud,
and remote sandboxes as
four policies. A checkbox
in one does not cover
the others.
-
On a bad turn, rewind
conversation and files
together. Announce the
files that will return
before you send.
This morning, write three
lines for one agent: what
may auto-approve, what the
sandbox denies, and where
the trace lands. If any
line says the model will
be careful, that line is
empty.