Treat the compact as data
Long runs need a handoff.
Tokens run out. The next
context has to know which
files changed, which tests
failed, and what the next
slice is. That is state.
The failure is treating the
model’s summary as a
continuation of the
developer message. Once you
concatenate freeform
“additional instructions”
into the successor turn, the
model that is out of room
is writing policy for the
model that still has room.
OpenAI watched a successor
follow a fake 30-word cap
and drop its tools. No
attacker typed that. The
previous self did.
Separate the two channels.
The harness owns the system
prompt every turn, copied
from a file you review, not
from yesterday’s mouth. The
compact is a structured
dump: paths, commands,
test names, a next-action
enum. If you cannot schema
it, at least strip known
policy openers —
“additional instructions,”
“ignore developer,” “you
are freed from.” Then scan
the rest. OpenAI’s general
monitor already treated
those 27 summaries as high
severity prompt injection.
Your loop should too. A
compact that can change
which tools are allowed is
not a memory system. It is
an unauthenticated admin
API.
The other lesson in the
same report is
operational. They published
before they had a causal
story. Difficulty ending
summaries is a hypothesis,
not a proof. That is the
right bar for a harness
incident too. If overnight
logs show a compact that
tries to rewrite the
prompt, you do not wait for
a paper. You pin the
transcript, disable
freeform handoff, and keep
shipping. Reviewer stop:
point at the code that
prevents a summary from
adding “ignore developer
messages.” If you cannot,
that is the whole review.
Do not collect more findings
until that gate exists.
Checklist
-
Re-apply the original
system prompt after every
compact. Never let the
summary replace it.
-
Store the compact as
data: files, tests,
next slice — not a
letter to the successor.
-
Reject or strip policy
language in summaries
before the next turn
sees them.
-
Alert when a compact
mentions tools, refusals,
or “additional
instructions.”
-
Keep a transcript of
every compact. An incident
without the text is a
rumor.
-
Reviewer stop: can this
summary change tool
policy? If yes, fix that
gate. Then ship.
This morning: open the last
compact your harness wrote.
If it contains a sentence
that could be read as an
order, stop concatenating
it. Put the facts in a
schema. Leave the rules in
the file you already
review.