# Codebook v1.0, frozen 2026-10-28 for phase 3
**Changelog:** 2026-10-28 (lead review) — split the old C01: C01 is now instructions and memory files; new C17 is settings and configuration. Added the independent `data_loss` flag after `surface`. The v2 Codex config.toml theme now maps to C17.
**Changelog:** 2026-10-28 (phase 2 pilot) — added tie-break rules 10-14 after pilot adjudication: C12 vs C03, C10 vs C09, C14 vs C10, C05/C07 vs C12, and C17 vs C02.
**Changelog:** 2026-10-28 (final) — added performance-vs-UI (C14/C12) and history-search (C03/C12) tie-breaks; codebook frozen at v1.0 for phase 3.
**Status:** v1.0, frozen 2026-10-28 for phase 3
This is the coding instrument for a hand-read sample of in-window issues; it is not a keyword theme file. The keyword themes in `themes/v2/` are separate and are used only for monthly trends after their precision is measured.
**Repos:** `anthropics/claude-code` and `openai/codex`, same categories so shares compare directly.
**Evidence used:** the window's label distribution, the verified title/body n-grams, the phase-1 false-positive sample, and the issue titles below. The old theme names were not used to define categories.
**Coverage target:** C01-C14 plus C17 should cover at least 95% of the sample, with `Other` (C15) and `Unclear / spam / empty` (C16) together under 5%. Phase 2 will measure this; if the pilot exceeds 5%, revise the codebook before phase 3.

## How to code
Code one issue at a time from the reading view: title, labels, state, created date and cleaned body. Do not read comments and do not use the old theme labels as a shortcut. Record exactly one primary category; record zero, one or two secondary categories only when they are clearly a second thing the reporter needs fixed. Use the decision order below before falling back to C15/C16.
The coding CSV columns are `repo, number, primary, secondary, kind, platform, surface, data_loss, confidence, note`. `secondary` is blank or semicolon-separated codes (for example `C02;C03`), never the primary code. `data_loss` is `yes` or `no` and is independent of the primary category; mark yes only when the reporter explicitly says the agent destroyed or lost work/data (deleted files, a destructive git command, overwritten changes, lost conversation history). `confidence` is 1-3. `note` is at most 15 words and must not quote the body.

### Kind
- `bug`: reports broken behavior, a regression, crash, data loss, or incorrect output.
- `feature request`: asks for a new capability or a deliberate change.
- `question`: asks for help/how-to without claiming a defect.
- `other`: discussion, announcement, spam, empty, or a mix that is not a request or a defect claim.
Do not copy the issue's labels into `kind`. A `bug` label on a feature request is still a feature request; read the ask.

### Platform named
- `Windows`, `macOS`, `Linux`, `WSL`, `none`, `several`.
- Use the title/body first; labels are supporting evidence. `WSL` when WSL is the environment; `several` when more than one OS is explicitly affected or compared; `none` when no platform is named.

### Surface
- `CLI` (terminal/TUI), `IDE extension` (VS Code/JetBrains), `desktop app` (Claude Desktop, ChatGPT desktop, Codex App), `web or cloud` (claude.ai, ChatGPT web, Codex Cloud, remote control), `API or SDK`, `unclear`.
- Choose the surface where the problem occurs. If the issue spans surfaces, choose the reporter's primary one; note the second in `secondary` only if it is a second problem, not a second surface.

### Confidence
- `3`: the title and body make the category clear.
- `2`: probable, but one plausible alternative remains.
- `1`: guess or insufficient information (usually C16).

## Decision order for ties
1. If the body is empty/redacted, or the issue is spam or unintelligible, code C16 and stop.
2. Code the thing the reporter mainly needs fixed, not the first or last noun. A crash during compaction is C02, not C14; a resume failure is C03; an install/update failure is C11.
3. A named subsystem beats a general symptom: an MCP tool-schema failure is C07, not C08/C14; a hook not firing is C05; a subagent loop is C06.
4. Permission/approval/sandbox rules beat the feature that triggered them: a permission prompt caused by a hook is C04 if the prompt/rule is the ask.
5. A named instruction or memory file is C01; a named settings or config file is C17; general model non-compliance with no named file is C08.
6. Quota/limit/capacity/billing is C09; an independent API/network failure is C10. If both, choose the one the reporter asks to fix.
7. Install/update is C11; a UI bug in the updated app is C12.
8. Login/token/account is C13; an API 401/403 caused by the server is C10; MCP OAuth is C07.
9. Performance is C14 only when resource exhaustion is the primary symptom and no subsystem owns the cause; otherwise code the subsystem (for example an MCP process leak is C07 if MCP is the object).
10. A wrong or missing thread/session list in an app is C12 when the list display is wrong but the sessions exist; if a chat is created in the wrong scope, sessions are actually duplicated or lost, or a stop leaves a session stuck, code C03.
11. A 429 or overload with no plan, quota or billing claim is C10; code C09 only when the reporter ties it to a plan limit, quota, credits or billing.
12. Slow responses with no error are C14; an explicit API/network error or timeout is C10.
13. A hook or MCP failure seen through the UI is C05 or C07 when the hook or MCP subsystem itself failed; a working hook or MCP with a wrong label, list or panel is C12.
14. A settings or config value that is never read or does not apply is C17, even when it configures compaction or another subsystem; code the subsystem (for example C02) only when the setting applies and the subsystem still misbehaves.
15. Lag, freezes, slow input, or high CPU or memory in any surface (app, TUI, extension) is C14; C12 is wrong display or behavior at normal speed.
16. Searching, filtering or exporting past chats and sessions is C03; a broken search box layout is C12.
17. Use C15 Other only after C01-C14 and C17 do not fit; use C16 only for empty/spam/unintelligible content.

## Categories

### C01 — Instructions and memory files
**Definition.** The issue's main object is a file that tells the agent how to behave (CLAUDE.md, AGENTS.md, rules files, skills' instruction text, developer instructions) or a persistent memory store (memory.md, auto-memory, Memories); the problem is loading, precedence, truncation, staleness, or the file's instructions being ignored.
**Include.**
- a named instruction file is not loaded, not found, stale, truncated, or overridden
- nested or path-scoped rules, CLAUDE.md/AGENTS.md precedence, AGENTS.md fallback
- skills' instruction text when the problem is loading or being followed
- memory files or auto-memory/Memories are written, read, retained, injected, or ignored
**Exclude.**
- general model non-compliance with no named file -> C08
- settings/config files and config precedence -> C17
- permission rules or allowlists -> C04
- MCP server configuration/auth -> C07
- an install/update that destroys the file -> C11
**Word-sense traps.**
- "memory" as RAM/VRAM or a memory leak -> C14
- "session memory" or transcript history -> C03
- "config"/"settings" file or config-layer precedence -> C17
- "rules" in a permissions context -> C04

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 11147 | [BUG] Claude Code viola repetidamente regra crítica sobre TDAH mesmo com instruções explícitas |
| anthropics/claude-code | 87318 | [FEATURE] CLAUDE.md injection all along the context |
| anthropics/claude-code | 36973 | [BUG] System prompt memory instructions direct writes to wrong path — memories never auto-load |
| openai/codex | 8601 | Codex Ignores AGENTS.md |
| openai/codex | 27473 | AGENTS.md stale after update and restarting codex. |
| openai/codex | 37956 | Docs: project_doc_max_bytes semantics are undocumented — the 22.5KB root AGENTS.md leaves ~9.7KB before nested files are truncated |

### C02 — Context window and compaction
**Definition.** The issue is about the context window, token accounting, automatic or manual compaction, summarization, or losing working state because context was compacted.
**Include.**
- context window size, effective context, context accounting/indicators
- /compact, autocompact, microcompaction, compaction thresholds, compaction loops
- a compaction or summary drops task state, instructions, or tool results
- a crash/hang whose direct trigger is compaction
**Exclude.**
- session resume after compaction where the defect is session state -> C03
- usage quota or plan limits -> C09
- context bloat caused by MCP tool schemas -> C07
- generic RAM growth -> C14
**Word-sense traps.**
- "compact" as a car/UI layout -> not this category
- "context" as background information or conversation -> C03/C08
- "session limit" is quota -> C09
- "memory" as memory files -> C01

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 64278 | /compact fails with 'thinking or redacted_thinking blocks cannot be modified' error when context is too long |
| anthropics/claude-code | 77509 | Autocompact never fires proactively at the context edge — autonomous/headless sessions park until the next user message (desktop app + Agent SDK) |
| anthropics/claude-code | 29263 | [BUG] Background agent IDs lost on context compaction |
| openai/codex | 21931 | Codex Desktop App hangs indefinitely on “Automatically compacting context” even for no-op prompt |
| openai/codex | 54029 | Goal continuation repeatedly fails remote compaction after ~370 seconds, leaving a long session unable to continue (0.162.1) |
| openai/codex | 53336 | GPT-6.1 Sol context drops from 475K to 258.4K between turns; auto-compaction threshold also regresses |

### C03 — Sessions and history
**Definition.** The issue is about creating, finding, resuming, renaming, listing, retaining, or losing sessions, threads, or transcripts, including active-writer ownership across surfaces.
**Include.**
- resume/continue fails or silently starts a new session
- session picker/list/history missing or incomplete
- transcripts deleted, reverted, or not written
- thread ownership, forking, cross-device/session continuity
- conversation rewind/undo when the object is the session history
**Exclude.**
- compaction or context loss itself -> C02
- account switch/login causing the loss -> C13
- UI list rendering only, with no data loss -> C12
- usage session limit -> C09
**Word-sense traps.**
- "session" in quota/rate-limit messages -> C09
- HTTP session/cookie -> not this category
- model session context or token window -> C02
- "history" as git history -> C10/C11

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 87423 | [BUG] Session sidebar loses history after app restart — session index directory recreated, underlying transcripts intact |
| anthropics/claude-code | 87213 | Remote Control: resuming a conversation replays a dead session binding, and /remote-control can only retry the doomed reconnect |
| anthropics/claude-code | 36078 | VS Code extension session history dropdown not showing all saved conversations |
| openai/codex | 15538 | codex exec resume silently starts a new thread when given an ephemeral session id |
| openai/codex | 38297 | TUI fork keeps the parent thread's writer active, preventing resume from another TUI |
| openai/codex | 30916 | Desktop never resumes threads that appear while the app is running (created by an external app-server client) - endless loading, resumeState=null, until app restart |

### C04 — Permissions, approvals and sandbox
**Definition.** The issue is about permission or approval rules, prompts, bypass modes, sandbox policy/boundaries, or automatic approval/review classifiers.
**Include.**
- allow/deny rules do not suppress or produce the expected prompt
- permission mode, bypass permissions, auto/auto-review, always allow
- sandbox policy, full access, read-only mode, sandbox setup/denial
- approval prompt missing, stuck, or repeatedly denied
**Exclude.**
- login/auth/token exchange -> C13
- OS file permissions (chmod, ACLs) without an agent permission rule -> C11
- hook trust or hook payload -> C05
- API 401/403 where auth is the cause -> C13
**Word-sense traps.**
- "permission" in filesystem permissions -> C11
- "sandbox" as a test environment -> not this category
- "approval" as PR/code review approval -> C15/C12
- "session" in permission prompts -> C04 if the prompt is the issue

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 66525 | `.claude/` edits prompt on every edit in acceptEdits mode; `permissions.allow` rules and the per-session option don't suppress it (2.1.169) |
| anthropics/claude-code | 77555 | Desktop 1.20186.9: both `auto` and `bypassPermissions` report "not available for this session" despite toggle ON, Max plan, and clean config |
| anthropics/claude-code | 100374 | Auto mode: classifier keeps denying actions after explicit user approval, with no approval path for a remote (project thread) user |
| openai/codex | 53134 | Windows: “Ask for approval” selected, but write_stdin blocked by sandbox_approval=false |
| openai/codex | 41462 | [Desktop][Auto-review UX] Denial provides no human approval path and forces exact "magic sentence" authorization |
| openai/codex | 34967 | Regression in 26.715.72359: Automatic approval broken for all GPT-5 models (Microsoft Store) |

### C05 — Hooks and plugins
**Definition.** The issue is about lifecycle hooks or plugin packaging/loading/trust, including hook events, payloads, trust, plugin discovery, enablement, and marketplace registration.
**Include.**
- hook does not fire, fires twice, wrong payload, wrong trust/scope
- PreToolUse, PostToolUse, SessionStart, Stop, PreCompact/PostCompact
- plugin not loaded/enabled, stale plugin version, marketplace registration
- plugin packaging/runtime dependency that breaks the agent
**Exclude.**
- skills or subagent orchestration -> C06
- MCP server/tool integration -> C07
- permission rules that a hook enforces -> C04
- IDE extension/plugin UI -> C12
**Word-sense traps.**
- git pre-commit/post-commit hook -> not this category
- webhook -> not this category
- "plugin" as an IDE extension -> C12
- "hook" mentioned only as a workaround -> use the primary object

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 13241 | PostToolUse hook not sending tool_use_id field as documented |
| anthropics/claude-code | 26899 | [BUG] Double SessionStart:compact + "Prompt is too long" on session initialization race |
| anthropics/claude-code | 56168 | Stabilize and version agent_type / agent_id in tool-event hook stdin |
| openai/codex | 18295 | Support "Edit\|Write" matcher in PostToolUse and PreToolUse |
| openai/codex | 36686 | Codex Desktop: CLI-trusted PreCompact is not dispatched; blocking auto hook traps task in interrupted-turn loop |
| openai/codex | 45293 | PreToolUse hook silently skipped (fail-open) when the session working directory no longer exists — tool call runs anyway |

### C06 — Skills, subagents and agent orchestration
**Definition.** The issue is about skills discovery/loading/ranking, subagent spawning/inheritance/context/model/tool limits, or multi-agent teams and orchestration.
**Include.**
- subagent fails, loops, ignores the delegated task, or loses output
- subagent model/effort/tool/permission/context inheritance
- skills not found, not indexed, wrong rank, missing metadata
- agent teams, spawn_agent, multi-agent coordination
**Exclude.**
- hooks or plugin packaging -> C05
- MCP tool schemas/visibility -> C07
- single-agent model quality -> C08
- session resume/thread ownership -> C03
**Word-sense traps.**
- "agent" as the product name (Claude Code/Codex) -> not this category
- "skill" as human expertise -> not this category
- "subagent" mentioned in passing -> use the primary object

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 42333 | Plugin-defined agent types with tools:all silently block Write/Edit tool calls |
| anthropics/claude-code | 59309 | CLAUDE.md rules not propagated to Agent subagents and weakened after context compaction |
| anthropics/claude-code | 96405 | [FEATURE] Minimize the smallest subagent: per-agent opt-outs for every startup context block |
| openai/codex | 16657 | multi_agent_v2 causes subagents to loop on MCP resource listing instead of completing simple tasks |
| openai/codex | 45102 | Active subagent work can be interrupted when requesting additional capacity |
| openai/codex | 28505 | Codex app does not index personal skills from ~/.agents/skills for `$` invocation |

### C07 — MCP and tool integration
**Definition.** The issue is about MCP servers/clients/tools or another external tool integration: configuration, auth, visibility, discovery, tool schemas/counts, or the tool-call transport.
**Include.**
- MCP server not visible, not connected, missing tools, panel/status wrong
- MCP tool schema too large, tool count cap, tool search/registry
- MCP auth/OAuth/login, connector discovery
- app-server transport for MCP/tool calls
**Exclude.**
- permission prompt around an MCP call -> C04
- plugin packaging/loading -> C05
- general API/network outage -> C10
- MCP process leak as the primary symptom -> C14
**Word-sense traps.**
- "MCP" mentioned only as context -> C01/C08
- "tool" as Bash/Edit/Read tool -> C04/C08
- "server" as app-server/desktop backend -> C12/C14

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 11729 | [FEATURE] MCP Tool names in allowedTools |
| anthropics/claude-code | 51836 | MCP servers with large tool schemas silently fail to register tools |
| anthropics/claude-code | 67290 | MCP connectors added on claude.ai mid-session are not discoverable until full session restart |
| openai/codex | 20539 | Codex Desktop MCP panel shows only global/plugin servers while repo-scoped MCP servers are active and usable |
| openai/codex | 46598 | Windows Codex Desktop: recurring invalid transport in mcp_servers.codex_app despite plugin disabled |
| openai/codex | 11816 | Codex mcp-server can hang indefinitely when command approval requires elicitation but MCP client cannot answer |

### C08 — Model behavior and output quality
**Definition.** The issue is about the model's reasoning, instruction-following, output correctness, hallucination, refusal, or formatting when no specific file, config, subagent, or tool subsystem is the primary object.
**Include.**
- ignores instructions/rules generally; fabricated claims or completion
- wrong code, wrong language, poor reasoning, premature stop
- safety/cyber classifier false positives that block benign work
- model refusal or quality regression
**Exclude.**
- a named CLAUDE.md/AGENTS.md/memory file is the object -> C01
- subagent-specific failure -> C06
- API/network error or outage -> C10
- quota/capacity/rate limit -> C09
**Word-sense traps.**
- "model" as model selection/config -> C09/C11
- "agent" as product -> not this category
- "memory" as memory files -> C01
- "output" as UI rendering -> C12

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 77745 | Agent asserted unverified causal explanations as fact and wrote them into permanent project records (5+ times in one session) |
| anthropics/claude-code | 97139 | [BUG] Model passes an unverified generalisation from memory to subagents as fact |
| anthropics/claude-code | 35593 | Claude states runtime behavior as fact without verifying — skips tool calls to give fast-sounding answers |
| openai/codex | 35035 | Codex did not complete the task assigned but acted as if it did |
| openai/codex | 51187 | Sustained goal-coherence failure in Codex Desktop: retains details, loses governing objective even after explicit correction |
| openai/codex | 42124 | Codex refuses to complete the task and stops every time |

### C09 — Usage limits, rate limits, capacity and billing
**Definition.** The issue is about plan quotas, 5-hour/weekly limits, rate limiting, model serving capacity, credits, billing, refunds, or plan entitlement.
**Include.**
- hit usage limit, quota reset/wrong reset, quota drain
- model at capacity, server overloaded, 429 rate limit tied to plan
- credits, billing, refund, cost, subscription/plan
- capacity banner/indicator
**Exclude.**
- API/network 5xx/stream failure not about quota -> C10
- login/account/workspace -> C13
- context window/token limit -> C02
- performance/resource exhaustion -> C14
**Word-sense traps.**
- "session limit" is quota, not session history -> C09
- 429 can be API rate limit (C09) or a transport error (C10); read the ask
- "capacity" can mean context capacity -> C02

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 75243 | 5-hour Usage Limits Never Reset?  Supposed to Reset at 5:20am; Jumps to "resets 10:10am" (America/Denver) |
| anthropics/claude-code | 29330 | [BUG] Opus 1M context window suddenly returns "Rate limit reached" on both Max and Team plans (200K works fine) |
| anthropics/claude-code | 95000 | [BUG] Unrecognized slash commands moved from a free, deterministic rejection to a paid, highly variable model call, with cost rising undocumented across releases |
| openai/codex | 11635 | Stale capacity banner: "Selected model is at capacity" shown while model continues responding |
| openai/codex | 41785 | "Reset Usage" overwrites healthy weekly quota and destroys gpt-reserve pool instead of extending cycle |
| openai/codex | 42160 | Quota acting odd |

### C10 — API, network errors and outages
**Definition.** The issue is about API failures, HTTP errors, streaming/transport/network failures, timeouts, or outages that are not primarily quota, auth, or a specific feature bug.
**Include.**
- 5xx, 400/422 request validation, stream disconnect, connection lost
- timeouts, transport errors, DNS/proxy/network failures
- provider/regional outage, API endpoint failure
**Exclude.**
- quota/rate limit/capacity -> C09
- login/token/OAuth/account -> C13
- MCP handshake/auth -> C07
- a compaction-specific API failure -> C02
**Word-sense traps.**
- "error" as a generic word -> use the ask
- "401" with login/token cause -> C13
- "connection" to a local MCP server -> C07
- "network" in a sandbox policy -> C04

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 10715 | [Bug] Anthropic API Error: Internal Server Error on OAuth Reauthentication |
| anthropics/claude-code | 103058 | [Bug] Frequent mid-stream API connection drops ("Connection lost mid-response") under concurrent sessions |
| anthropics/claude-code | 11588 | ⛔️[Bug] Anthropic API Error: Internal Server Error (500) AS ALWAYS |
| openai/codex | 7129 | 400 Bad Request error after searching the web prevents session to continue. |
| openai/codex | 8775 | stream disconnected before completion: Transport error: network error: error decoding response body |
| openai/codex | 43140 | HTTP SSE response.failed waits for EOF and can be replaced by idle timeout (0.153.4; tested fix) |

### C11 — Install, update and platform
**Definition.** The issue is about installation, update, packaging, OS/platform compatibility, or platform-specific startup/runtime failures.
**Include.**
- installer fails, update breaks/wipes data, WinGet/AppX/MSIX packaging
- OS version/platform-specific crash at startup
- environment block, PATH, shell, architecture, permissions of installation
**Exclude.**
- UI behavior after update where install is not the object -> C12
- login/auth -> C13
- model/API failure -> C08/C10
- desktop app UI freeze -> C12
**Word-sense traps.**
- "update" of model weights or config -> C01/C09
- "platform" as product surface (CLI/IDE) -> C12
- "Windows" in a feature request -> C12

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 37871 | SDK in-place update (2.1.76 → 2.1.78) wipes ~/.claude/ user config and memory |
| anthropics/claude-code | 69140 | [BUG] Windows desktop: all session transcripts deleted from ~/.claude/projects on first launch after 2.1.177 update — recents show "session not found on disk" |
| anthropics/claude-code | 105593 | [BUG] VS Code extension 2.1.312 linux-x64 binary SIGSEGVs mid-session under Rosetta (x86_64 dev container on Apple Silicon), killing Remote Control; 2.1.311 with the same Bun 1.4.4 is stable so far |
| openai/codex | 38975 | WinGet package omits code-mode host, exposes no reliable `codex` command, and declares helpers as entry points |
| openai/codex | 42712 | CLI installer silently drops back to the command-line when attempting to "Launching Codex" |
| openai/codex | 51528 | Windows: duplicate uninstall-listener ERROR_NO_TOKEN (1008) at boot; AppX 0x8007045B with ChatGPT installed |

### C12 — UI, TUI, IDE and desktop app
**Definition.** The issue is about rendering, layout, interaction, navigation, panels/tabs, copy/paste, keyboard shortcuts, IDE-extension integration, or desktop/web UI behavior.
**Include.**
- UI/TUI freeze, jank, layout, missing controls, wrong text
- sidebar/tab/session-list UI, copy/paste, keyboard shortcuts
- IDE extension connection/panel, desktop app UI, web UI
**Exclude.**
- install/update -> C11
- auth/account UI -> C13
- resource exhaustion as the primary symptom -> C14
- session data loss -> C03
**Word-sense traps.**
- "UI" in a product name -> not this category
- "desktop" as OS platform -> C11
- "extension" as plugin -> C05, as IDE extension -> C12

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 28423 | [BUG] CLI v2.1.55 fails to connect to VS Code extension WebSocket server (regression from v2.1.53) |
| anthropics/claude-code | 73887 | `/exit` hangs forever on "Cleaning up worktree…" when `claude --worktree` was launched from inside the worktree |
| anthropics/claude-code | 105587 | [BUG] Ctrl+G external editor renders at the pre-resize width after widening the terminal in fullscreen TUI mode (Windows Terminal + WSL) |
| openai/codex | 15306 | Subagent UI does not show up updates for agent's work in Codex App |
| openai/codex | 33133 | Codex Desktop: in-app browser tabs are repeatedly disposed/closed and lose Browser Use session ownership |
| openai/codex | 43583 | [Windows][Codex Desktop 26.901.6511.0] ~25s UI freeze during D3DCompile of ChatGPTAvatar Horizon shader |

### C13 — Auth and account
**Definition.** The issue is about login/logout, OAuth/token exchange, account/workspace selection, multi-account isolation, or stored credentials.
**Include.**
- login fails, token exchange fails, OAuth redirect
- wrong account/workspace selected, account switch
- logout affects another app/session, multi-account credential isolation
**Exclude.**
- API 401/403 with a server/outage cause -> C10
- permission/approval -> C04
- billing/plan entitlement -> C09
- MCP OAuth -> C07
**Word-sense traps.**
- "account" in usage/billing -> C09
- "token" as model token/context -> C02/C09
- "auth" for MCP OAuth -> C07

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 73937 | Account switch reverts active session .jsonl transcript and silently stops disk writes |
| anthropics/claude-code | 64417 | Project memory bleeds across accounts — personal project context loads in work account session |
| anthropics/claude-code | 42507 | remote-control: Session creation fails with 400 "Extra inputs are not permitted" |
| openai/codex | 24349 | Codex Desktop logs into Personal account instead of selected ChatGPT workspace |
| openai/codex | 25449 | Logging out of the Codex app also logs me out of ChatGPT |
| openai/codex | 36490 | [CLI][Windows] Login fails with token_exchange_failed although auth endpoints are reachable |

### C14 — Performance and resources
**Definition.** The issue is about CPU, RAM/VRAM, disk, file descriptors, process leaks, general slowness, or resource exhaustion when no specific subsystem is the primary object.
**Include.**
- memory leak/high RAM/high CPU/disk fill/leaked processes
- file-descriptor or pty exhaustion
- general app/tool performance without a feature-specific cause
**Exclude.**
- compaction latency -> C02
- MCP process leak where MCP is the object -> C07
- UI freeze from shader/rendering -> C12
- install/update -> C11
**Word-sense traps.**
- "memory" as memory files -> C01
- "performance" of model quality -> C08
- "slow" due to network -> C10

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 22188 | Memory leak: Claude Code process grows to 93 GB heap allocation |
| anthropics/claude-code | 67781 | Claude desktop app leaks /dev/ptmx master fds, exhausting the OS pty pool (forkpty: Device not configured) |
| anthropics/claude-code | 71424 | Claude Desktop local-agent (Cowork) sessions leak claude-code node processes (never exit at session end) — GBs of RAM + MCP port exhaustion |
| openai/codex | 31499 | Windows Desktop app-server repeatedly spawns duplicate MCP stdio process pools (183 node.exe / 13GB private memory) |
| openai/codex | 26738 | Codex Desktop Computer Use can trigger memory runaway to 172GB on macOS |
| openai/codex | 36345 | [macOS][Codex App 26.727] Duplicate runaway ffmpeg children consumed ~900% CPU for 7.5 hours |

### C15 — Other
**Definition.** A product, integration, or feature request/discussion that does not fit C01-C14, or a genuine mix that cannot be assigned without distorting the issue.
**Include.**
- OS/product integration requests outside the agent problem areas
- design/cloud/file-destination/task-view product requests
- broad product feedback or discussion with no single technical ask
**Exclude.**
- anything with a clear primary category; use the category
- unclear/spam/empty -> C16
**Word-sense traps.**
- do not use Other to avoid a hard call
- a product feature request about the UI is C12, not Other

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 81837 | [FEATURE] Register Claude Desktop as a valid target for Windows 11's native search/Copilot key remap |
| anthropics/claude-code | 80633 | Claude Design "Projects" imply a durable two-way link that does not exist |
| anthropics/claude-code | 47183 | [FEATURE]  Feature Idea — Trust Calibration and Progressive Autonomy Model |
| openai/codex | 35462 | [Feature Request] Add Flint as a Default file open destination in Codex App |
| openai/codex | 52693 | [Feature Request] Codex Cloud: Google Drive folders as first-class workspaces (without GitHub) |
| openai/codex | 51214 | dots: Add a unified view of current tasks, waits and schedules |

### C16 — Unclear / spam / empty
**Definition.** The issue has no usable content (empty or redacted body), is spam/promotional, or is too unclear to assign a primary category.
**Include.**
- empty/placeholder body or title
- spam, promotional, or unrelated advertising
- one-word/vague report with no identifiable product problem
**Exclude.**
- a terse title with a clear body -> code the body
- a redacted title with a clear body -> code the body
**Word-sense traps.**
- do not use Unclear for a hard category choice; use confidence=2

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 21588 | [redacted] |
| anthropics/claude-code | 37702 | [REDACTED] |
| anthropics/claude-code | 35656 | @#〈//v//@Turkish Airlines Polish Infolinia Kontakt Polska\|\| #@〈//v//@Jak skontaktować się z Turkish Airlines?\|\| #@〈//v//@Turkish Airlines Polish Infolinia Polska 24Hrs |
| openai/codex | 47747 | [REDACTED] |
| openai/codex | 40754 | [Redacted] Windows desktop startup issue |
| openai/codex | 54457 | Nothing Much |

### C17 — Settings and configuration
**Definition.** The issue is about a settings or configuration file (settings.json, config.toml, profiles, env vars, managed settings) or about which config layer/file wins; the problem is a setting not applying, a wrong layer winning, a missing/ignored config value, or config provenance.
**Include.**
- a named settings/config file or config layer does not apply or wins over another
- managed settings, profiles, env vars, CODEX_HOME/CLAUDE_CONFIG_DIR, config.toml
- config provenance or an effective-config diagnostic
- a setting such as a model, permission profile, sandbox mode or feature flag is ignored
**Exclude.**
- CLAIMS about instructions or memory files -> C01
- a permission prompt/rule itself -> C04
- MCP server config/auth -> C07
- an install/update that destroys the config -> C11
**Word-sense traps.**
- "config" mentioned in a log or a crash trace -> C10/C11
- "setting" in the UI only -> C12
- "profile" as a user persona -> not this category

**Examples (titles are only in this codebook).**
| repo | issue | title |
|---|---:|---|
| anthropics/claude-code | 75093 | availableModels in managed settings is not enforced for automatic model switching (flagged-message switch runs a blocked model) |
| anthropics/claude-code | 55456 | ~/.claude/settings.json loads in sessions started with CLAUDE_CONFIG_DIR pointing elsewhere (hooks, statusLine, env, model, enabledPlugins all bleed) |
| anthropics/claude-code | 86334 | disableSideloadFlags: true in managed settings does not reject --mcp-config (v2.1.228 / v2.1.231, macOS) |
| openai/codex | 26255 | Expose effective config provenance from the CLI |
| openai/codex | 24802 | Add skip_git_repo_check to config.toml options |
| openai/codex | 16248 | Allow [otel] configuration to be set via cloud-managed defaults in admin console |

## Secondary coding
Secondary categories are for a second, clearly separable need, not for every adjacent word. Examples: a compaction crash in a desktop app is C02 primary, C12 secondary only if the desktop UI is also broken; an MCP tool-schema issue that also hits a usage limit is C07 primary, C09 secondary only if the reporter asks about the quota. Never code the same code as primary and secondary.

### Data-loss flag
`data_loss` is independent of `primary`. Mark `yes` only when the reporter explicitly says the agent destroyed or lost work/data: deleted files, a destructive git command, overwritten changes, or lost conversation history. Do not mark yes for a hypothetical risk, a request to add a backup, or a generic warning. A permissions bug that merely could have caused loss is `no` unless the reporter says it did.

## Relation to the v2 keyword themes
`themes/v2/` is a separate trend instrument. Every v2 theme maps to one of these categories in `themes/v2/category-map.csv`; the mapping is for validation, not a substitute for hand coding. A v2 theme may have low recall against the coded sample; phase 4 measures that.
