Four fresh mechanisms share
one failure: absence got
treated as a decision. A blank
policy, a chat mention, a
client string, and a timed-out
question each look finished if
you squint. None of them is
the choice you think you made.
A default-stamp fills blanks.
GitHub's global Copilot policy
is rolling through today. An
eligible feature left
Unconfigured becomes Enabled,
Disabled, or delegated,
including MCP servers. The
write happens once. Changing
the default next week does not
unstamp what already landed.
Explicit choices survive.
Unconfigured does not mean
off, and it does not mean "we
will decide later" after the
enforcement window. Later is
a new explicit setting, not a
revision of the default.
A mention is a handoff into a
draft. The Teams app can turn
a notification into an
investigation and a pull
request. GitHub's sequence
still ends with a person
reviewing, testing, and
merging. Closing the ticket at
the mention skips the only
step that checks whether the
selected repository was the
one you meant. The legacy app
retires on 16 November. An
install you have not updated
is a deadline, not continuity.
A client row is traffic, not
identity. totals_by_client
closes a real gap: tools that
never sent editor telemetry
were missing from IDE totals.
The label is whatever
integration ID the caller
sent. Unrecognized names
collapse to other. Request
counts are model calls, so
they will not match prompt
counts. Code review models
show up as unknown. That is
enough to notice spend. It is
not enough to certify which
binary ran, which human
started it, or which skill it
loaded.
Silence in a tool call needs
a terminal instruction.
Claude Code 2.1.310 now tells
the model, when an MCP
elicitation times out
unanswered in a non-interactive
session, not to repeat the
call. Without that sentence,
a retry loop will read failure
as permission to ask again,
and the second call is not a
better question. The same
habit belongs in permission
prompts: say what blocking a
read will do to later shell
commands, and say where a
symlink actually points. An
approval of a path you did
not resolve is an approval of
a guess.
-
Before the default finishes
enforcing, open AI Controls
→ Copilot → Default policy
and set every feature you
care about, including MCP
servers. Unconfigured is a
blank, not a no.
-
After the stamp, do not
roll back by editing the
default. Set the feature
itself. Explicit choices
are what survive.
-
Treat a Teams @GitHub pull
request as a draft. Pin the
repository before the
mention. Review the diff.
Update off the app that
retires on 16 November.
-
Read
totals_by_client
as server-side model
traffic. Do not compare
request counts to prompts.
Do not treat the client
string as a verified
identity.
-
When an MCP question goes
unanswered, fail the job
and surface the question.
Do not retry the same call
because the timeout looked
like a transient error.
-
On a path approval, resolve
symlinks and state the
consequence of a deny. The
prompt should name the
target, not only the link.
-
Stop when the explicit
settings, the review bar
for mention-PRs, and the
do-not-retry rule are
written. Do not inventory
every client string to feel
thorough.
Write the no while the field
is still blank. A stamp, a
mention, and a retry will
happily finish the sentence
you left open.
The notes this sits on are
GitHub's
Teams app, the
global default,
totals_by_client, and
Claude Code 2.1.310.