-
The key did not go through the chat.
On 12 October 2026 Simon
Willison shipped
web-edit 0.1a0, a small
Python web app for viewing
and editing files in a
folder. He was on a phone,
in Codex Remote, and needed
to change a credentials
file. Pasting the new secret
into the chat would have
sent it through the model
and left it in the session.
He had Codex and GPT-6 Astra
Extra High build the editor
instead. The agent can start
it. He edits over Tailscale,
in a browser, with
CodeMirror 6, because Monaco
still is not a good phone
editor.
The split is the point. The
model may start a server. It
does not receive the new
value. A remote agent whose
only secret tool is “paste
it here” has one path, and
that path keeps a copy in
the transcript, the tool
log, and whatever capture is
on. If the value must not
enter the model, the tool
has to be a page the human
types into, not a message
the model is asked to write
down.
Source:
Simon Willison — web-edit 0.1a0
-
Identity is not the prompt.
On 12 October 2026 GitHub
shipped client telemetry
controls for managed Copilot
settings. Enterprise admins
can attribute activity to a
user without collecting
prompts, responses, or tool
content.
telemetry.capture.identity
adds three fields to the
OpenTelemetry data:
user.name (the
GitHub login),
process.user.name
(the local operating-system
account), and
host.name (the
machine). It is off by
default, and it stays
separate from the existing
pseudonymous user id.
Five content classes are
independent, and each is off
by default. Prompts cover
user, system, and developer
prompts plus supported input
context. Responses cover
assistant text and supported
reasoning. Tool arguments
cover raw arguments,
commands, schemas, and
identifiers for tools, MCP
servers, plugins, and hooks.
Tool output covers results
and execution errors. Policy
detail covers raw policy
text such as sandbox
filesystem paths. The older
captureContent
setting is a shorthand for
those five classes. It never
turns identity on. An
explicit managed value beats
a local setting, an SDK
config, and an environment
variable. The controls apply
in Copilot CLI, the Copilot
app, and VS Code sessions
that use Agent Host.
Prompt and tool capture can
include source, file
contents, commands, tool
results, and workspace or
profile paths. A trace that
names who ran the agent is
not a trace that stored what
they typed. Turn on only the
class you can defend, and
send it to a collection
endpoint you chose.
Source:
GitHub Changelog — Client telemetry user attribution and configurable capture
-
The hook failed the commit.
On 13 October 2026 Geoffrey
Huntley wrote up a loop that
kept missing the same
library. Over the previous
two days he had refactored
toward a diagnostics module
for OpenTelemetry and
structured logging. The next
loop did not follow it.
Updating AGENTS.md would
have left a delta, and the
file would drift. He wrote a
pre-commit hook that reads
the git diff and fails the
commit when the change calls
an observability module and
bypasses the diagnostics
library. The failure injects
a prompt telling the agent
to use the library. He says
the miss became ten out of
ten.
He is explicit that skill
packs, AGENTS.md, and MCP
notes are probabilistic.
They read well. They do not
guarantee the next session
will obey. If you correct
the same miss three times,
automate the check. He
points at Danger, the CI
tool that already did this
for human review: fail the
build on a coupling you are
tired of explaining. Josh
Wulf, in the conversation
the post writes up, called
the hook Danger in the loop,
and summed the skill-pack
argument as agency, not
AGENTS.md. Huntley also says
to delete skills and
AGENTS.md every couple of
months. A pack that steered
an older model can de-tune a
newer one, and without evals
on your traces you cannot
tell which way you moved.
A paragraph the model may
skip is a wish. A hook that
fails the commit is a rail.
The human still decides what
the rail checks. The commit
no longer negotiates it.
Source:
Geoffrey Huntley — nobody should type code by hand anymore