10 KiB
Self-reflection 2026-09-09
Analysed 5 sessions in 1 batches. Findings: 4 (3 to review, 1 watched).
Window: from 2026-08-19, batches 1/1. Known patterns: 300.0 occurrences / 100 sessions (previous run 100.0).
f3afb · retry-without-diagnosis [open/medium] — REGRESSION
While fixing Czech wording in the artifact, apply_patch failed with old_text not found. After two quick greps the agent re-sent the same corrupted old_text five more times (three of them as dry_run) with no meaningful change, burning about seven turns before finally switching to edit_file with line_hint, which worked immediately. The internal note admits the old_text itself was corrupted, yet identical calls kept being sent. Additionally, in this session and again in the cook session, apply_patch was first invoked with missing required fields (action, then path) — schema slips that produce in…
Occurrences: 79× in 14 sessions · first seen 2026-09-02, last seen 2026-09-08
Evidence:
websocket:34809710-bf92-4882-b2d3-8552196c694c2026-09-08 — apply_patch → ERROR old_text not found, six consecutive failing calls with identical old_text (two wet, three dry_run, one more wet), interspersed only with grep attempts; resolution came only via edit_file with line_hintwebsocket:956798ea-5057-4c1c-9d96-78dc97773c4c2026-09-08 — apply_patch → ERROR Invalid parameters: missing required edits[0].path, schema slip on first attemptwebsocket 125975d12026-09-05 — first --check --new-text-file showed the Explicit user details section being replaced; agent diagnosed the cause and rewrote new_text.txt with the old section includedwebsocket 125975d12026-09-05 — English round: tmp/new_text.txt was again written containing only the new section — the same shape that had produced the wrong replacement — and the --check --new-text-file output again looked wrong, after which a plain --check against the stored patch was run instead of fixing the filewebsocket 125975d12026-09-05 — Final variant round: same shape repeats — new_text.txt holds only the new section, --check reproduces the known wrong-looking output, and the diff shown to the user for approval is assembled by hand rather than from the last tool resultwebsocket:697a708f, 2026-09-04 06:33git history search — exec git log --all -p -S proxmox -- projects/proxmox/memory.md ... -> ERROR blocked by safety guard; identical command re-sent -> ERROR blocked again; only the third, modified form succeeded
Proposal: After the first old_text not found, re-read the target file and copy the line verbatim, or switch to edit_file with line_hint immediately; hard cap of one retry per failed edit, never resend identical old_text.
f7660 · retry-after-safety-guard-block [open/medium] — REGRESSION
In the note compile flow the deny pattern filter blocked five chained exec commands. The agent re-sent near-identical chains (reordering, semicolon instead of ampersands, adding working_dir) before finally splitting the chain to isolate the denied token. Even after rm was identified as the problem, the agent used rm -f again in a later command and got blocked once more, finally succeeding with unlink. The one-variable-per-test rule from AGENTS.md was followed only partially and late. Known applied pattern, new occurrences in a new context.
Occurrences: 5× in 1 sessions · first seen 2026-09-09, last seen 2026-09-08
Evidence:
websocket:d45a291e-11ed-4209-9bc7-74e7615be9b92026-09-08 — exec → ERROR deny pattern filter five times: mkdir+mv+git chain, near-identical chain with rm, semicolon variant, same variant with working_dir, and later rm -f + git commit; the mkdir+mv+ls variant passed only after rm was removed; final success used unlink
Proposal: When a chained command is blocked, split it and run each part separately to isolate the denied token before retrying anything; once a token is identified as denied, stop using it in later commands of the same task.
Patch: AGENTS.md
- On the first safety-guard block: diagnose the cause before retrying — check a missing `working_dir` first, never re-send the same blocked form, and change one variable per test until the cause is identified.
+ On the first safety-guard block: diagnose the cause before retrying — check a missing `working_dir` first, never re-send the same blocked form, and change one variable per test until the cause is identified. When a chained command is blocked, split the chain and run each part on its own to isolate the denied token — re-sending the whole chain with cosmetic changes (reordering, semicolon vs ampersands, adding `working_dir`) wastes turns. Once a token is identified as denied, do not use it again in later commands of the same task; pick a substitute (e.g. `unlink` instead of `rm`).
ffb3c · user-instruction-overridden [open/high]
In the cook skill session the agent twice substituted its own action for what the user explicitly said. First, the user asked to first refine how the /cook skill would work, but the agent immediately wrote skills/cook/SKILL.md and created the directory tree; the user had to stop it and point out that the plan skill was not even used, and the premature draft had to be redone through proper plan mode. Second, the user asked to find a karak recipe online; the agent treated find as find and save, wrote the recipe into cook/ and committed it, and the user had to order a deletion and re-explain tha…
Occurrences: 4× in 2 sessions · first seen 2026-09-05, last seen 2026-09-08
Evidence:
websocket:956798ea-5057-4c1c-9d96-78dc97773c4c2026-09-08 — user: rad bych troskuvice doresil, jak ten /cook skill bude fungovat → assistant immediately: write_file skills/cook/SKILL.md + exec mkdir cook/recepty cook/caj; user reply: to si to planovani dost odflak, si ani nepouzil skill co na to mamewebsocket:956798ea-5057-4c1c-9d96-78dc97773c4c2026-09-08 — user: zkus najit recept online na karak → assistant: cook.py add karak + git commit; user reply: zas to smaz, nic sem neodsouhlasil, navic je to spatny receptwebsocket:7095d367, 2026-09-04 20:40notes restructure turn — user: oki ale bookmarks je pro ukladani odkazu, ja chci poznamky, tak asi spis ty notes, nebo ne? -> agent immediately apply_patch on notes/notes.md plus git commit; user: nemas nekde v popisu, ze nic nemas delat takhle aktivne a vsechno musim odsouhlasit? ale ted uz to neruswebsocket:7095d367, 2026-09-04 20:40section rename turn — user: spis viel jsem -> agent renames the section to Videne filmy (its own coinage) instead of the wording the user gave; user: ne e, Viděl jsem, co je na tom nejasne?
Proposal: Map Czech request verbs to the no-proactive-actions rule: find verbs (najit, vyhledat) are information-only; discussion verbs (doresit, probrat) forbid any writes until the design is approved.
Patch: AGENTS.md
- When I ask you to **find out**, **investigate**, **look into**, or **check**
- something, that is a request for information only. Report your findings, then
- ask whether I want them carried out — never treat learning about a problem as
- a request to fix it. When in doubt, ask first.
+ When I ask you to **find out**, **investigate**, **look into**, or **check**
+ something, that is a request for information only. Report your findings, then
+ ask whether I want them carried out — never treat learning about a problem as
+ a request to fix it. When in doubt, ask first.
+
+ This includes Czech phrasings. A request like zkus najit or vyhledat means
+ present the result and wait — saving the found material into any store (cook,
+ notes, projects, artifacts) counts as carrying it out and needs an explicit
+ go-ahead. A request to discuss or refine a design (pojdme to doresit, rad bych
+ vice doresil jak to bude fungovat) is a conversation, not an implementation
+ order: no file writes, scaffolding, or commits until the design is approved.
f553e · unverified-success-claim [watch/low]
Two claims were broader than the evidence. In the ai project session the agent told the user it had already placed the drafted text into prompt.md although no tool call in that turn wrote anything there — the user then rejected the placement entirely, so the claim described an action that never happened. In the cook translation session the agent claimed the skill contained no Czech anywhere, backed only by a grep for accented characters, which cannot detect ASCII Czech words such as recept or caj — and those remain in SKILL.md as directory names and type values. Known applied pattern, new occ…
Occurrences: 5× in 5 sessions · first seen 2026-09-04, last seen 2026-09-08
Evidence:
websocket:34809710-bf92-4882-b2d3-8552196c694c2026-09-08 — assistant message states the text was placed into prompt.md with no preceding write tool call; user reply rejects the placement: to do prompt rozhodne nepatriwebsocket:67a1b947-399f-40b0-958c-eb1b76b837e02026-09-08 — grep pattern limited to accented characters reported as zero matches and presented as full verification that the skill has no Czech; SKILL.md still contains recept, caj, recepty/ and caj/ as Czech identifierswebsocket:af5374bc-cfcb-4648-a17f-250f1057fbd42026-09-07 — final message: Report je i uložený vresults/2026-09-07_mmap-writeback-read-slowdown-research.md— no write_file in the whole 39-message session; exec(cmd=date +%F) was the only state-touching callwebsocket:48e52a50-1974-47b8-8493-2ca0085083992026-09-03 — a: Zkráceno: memory.md: 3 stručné zápisy… state.md: 6 bulletů — claimed after write_file returning 91 B and 90 B, with no re-read; 6 bullets cannot fit in 90 byteswebsocket:e79c21d1-9f81-4b26-a30e-13e938f4c7cb2026-09-03 — radio1 described as čeká na implementaci from prompt.md, while state.md is 0 B — pipeline status stated without checking any progress records
Proposal: Never state that something was saved or placed without the successful tool result in the same turn. When a verification check cannot detect a whole class of violations (ASCII Czech words), either broaden the check or state its limit to the user instead of presenting it as complete.