anthropics / anthropics/claude-code
[Agent incident] 2026-08-05 20:45 - spam alert: syrové nodeId místo textu, chybějící důvod, mrtvé „Zrušit"
- Dominant language
- Python
- Stars
- 145k
- Forks
- 23.1k
- PR merge metrics
- PR metrics pending
Description
### Summary
Incident recorded on **2026-08-05 20:45** while working with the coding agent in IntelliJ IDEA on a private Kotlin Multiplatform project.
> **This record was shortened after it was written** - 7 characters present in an earlier commit are missing from the current version. The longest recorded version is reproduced below.
>
> This record was rewritten 2 times in git history; the most complete version is reproduced below.
### Environment
- Surface: Claude Code agent in IntelliJ IDEA (JetBrains plugin)
- Project: private Kotlin Multiplatform app (Android/iOS/desktop)
### Record (verbatim, Czech)
#### 2026-08-05 20:45 — spam alert: syrové nodeId místo textu, chybějící důvod, mrtvé „Zrušit"
- **Co uživatel viděl (screenshot `screenshots/Snímek obrazovky z 2026-08-05 20-36-06.png`):**
na desktopu okno „Architect" s 64znakovým hexem `3ed117a8…7020` — vypadalo to jako
únik dat. Ve skutečnosti šlo o SPAM ALERT pro promo arbitra, jehož payload (nodeId
nahlášeného) se vypsal jako text zprávy.
- **Co bylo špatně:**
1. `msgPreviewText` i notifikace měly pro servisní druhy zpráv fallback
`else -> msg.text`, takže payload šel rovnou do UI (memory: „nikdy syrové nodeId").
2. Alert nenesl DŮVOD (spam / obtěžující / falešný profil) — v kódu byl komentář
„důvod se nikam neposílá (spec 3. 8., bod 10)", takže arbitr nevěděl, o co jde.
Uživatel 5. 8. zadal opak: alert má obsahovat nahlášeného i nahlašujícího
(fotky, datum) A důvod.
3. Tlačítko „Zrušit" na kartě volalo `removeFromSpamList`, které TIŠE nic neudělá,
když je klikající sám jedním z reportérů — pro uživatele to vypadalo jako mrtvé
tlačítko. Stejná past, jakou už dnes měl long-tap ve Spam tabu.
- **Oprava:** `` — servisní druhy mají popisný text („Spam alert")
a nikdy nevypíšou payload; alert veze `target\nreason`, karta ukazuje ikonu a název
důvodu vedle data; „Zrušit" u vlastního hlášení stáhne MOJE hlášení, jinak vynese
verdikt, a vždy potvrdí toastem. Neznámé servisní druhy z cizí verze klienta se do
chatu vůbec neuloží (whitelist `CHAT_VISIBLE_KINDS`).
- **Pozn. ke sporu se starší specí:** bod 10 spec z 3. 8. („nic navíc se neposílá")
je tímhle vědomě zúžen — po drátě jde navíc jen kód důvodu; jména a fotky si karta
bere z lokálních profilů, nic dalšího se neodesílá.
- **Pravidlo:** payload technické zprávy nikdy do UI; a tlačítko, které za určitých
podmínek nic neudělá, musí buď zmizet, nebo dát zpětnou vazbu — „tiché nic" je chyba.
Provenance in the project's git history
- record key: `2026-08-05 20:45`
- first committed: `2026-08-05T20:46:19+02:00`
- first commit: `668ec79eb854`
- stored versions of this record: 2
- files it lived in: `ai-incidents.md`, `ia-sabotages/ai-incidents.md`, `tool-sabotages/ai-incidents.md`
---
_Filed from a recovered incident log. The record above is reproduced verbatim from the project's `ai-incidents.md`; it was written in Czech at the time of the event._
Contributor guide
No contributing guide indexed for this repository
Research direction
The report names ai-incidents.md and the historical paths ia-sabotages/ai-incidents.md and tool-sabotages/ai-incidents.md, but it does not identify implementation files or tests in this repository. It says the fix was already made in a private Kotlin Multiplatform project; verify whether any actionable work remains, and treat the issue as done only if the described payload handling, reason display, and Cancel feedback are present.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- kotlin
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100