Flags
The eight heuristic labels applied to cached sessions, and the exact rule behind each.
Flags are stable protocol strings and are never translated. Each is a deterministic rule over cached rows — an operator signal about your own runs, not a judgment about OpenCode.
Canonical source ↗Eight flags, derived locally
Stable protocol strings, never translated. Each one is a rule over cached rows — an operator signal about your own runs, not a judgment about OpenCode itself.
Tool failure loop
tool_failure_loopRule:tool_calls ≥ 20 and error rate > 30%
The agent kept calling tools that kept failing. Usually a broken assumption about the environment.
Patch waste
patch_wasteRule:patch_count > 50, apply_patch_ok = 0, summary_additions = 0
Fifty-plus patch attempts, nothing applied, nothing added. Pure burn.
Context pressure
context_pressureRule:compaction_count > 15
The session spent more effort compacting context than moving forward.
Truncation
truncationRule:at least one message with finish = length
Output hit the token ceiling. Whatever came next was never written.
Metadata bug
omo_metadata_bugRule:session title starts with the literal 'undefined'
A harness-side metadata defect leaked into the stored title.
Security anomaly
security_anomalyRule:title matches local injection-like string heuristics
Worth a human look. String matching only — no model, no network.
Low yield, high cost
low_yield_high_costRule:> 1M tokens, no additions, no successful apply_patch
A million tokens spent with nothing landing in the diff.
Data quality gap
data_quality_gapRule:session month falls in a known low-coverage window
Not a session problem — a dataset problem. Flagged so it is never read as a real zero.