Catalog / Software Engineering & IT Operations / CODE-014

Bug triage, reproduction & automated fixing

Classify and deduplicate incoming bug reports and crashes, reproduce them in a sandbox, locate the root cause and propose a tested fix as a pull request for human review.

Maintainers spend a large part of their time reading vague bug reports, finding duplicates, asking for missing details and reproducing the problem before a single line is fixed. AI agents now take over the first three steps reliably and increasingly the fourth: they classify and route the report, write a failing test that reproduces it, trace the root cause and open a pull request. A human still reviews and merges; the benefit is shorter time to first diagnosis and fewer context switches for engineers.

Problem & value

  • Today: reports arrive via issue trackers, support tickets, app-store reviews and error monitors. Triage (severity, component, owner, duplicates) is manual, often by rotating "bug captain" staff. Many reports lack steps to reproduce, and non-reproducible bugs age in the backlog.
  • AI value: consistent labelling, semantic duplicate detection, automatic requests for missing information, reproduction as an executable test, and a candidate fix with explanation. Error-monitoring vendors report that their agents can analyse an issue using traces, logs and profiles and open a pull request automatically [2].
  • Evidence: on SWE-bench Verified (500 real GitHub issues from Python projects), leaderboard scores of frontier agents now exceed 90% according to third-party aggregators [1]; but the benchmark is widely considered saturated and possibly contaminated, so real-world fix rates on proprietary, multi-language, poorly tested code are lower. Measure on your own backlog before quoting any figure.

Variants

  • Issue triage only: labelling, deduplication, missing-info requests (lowest risk, fast payback).
  • Crash-driven fixing: the trigger is a production exception from an error monitor, not a human report.
  • Reproduction-first: the agent only produces a failing test or a minimal repro; humans fix.
  • Open-source maintainers: bots on GitHub/GitLab that triage community issues.
  • Mobile/games/embedded: reproduction needs emulators or hardware-in-the-loop; automation is partial.
  • Private use / hobbyists: an agent in the terminal or IDE fixes a failing test locally (see CODE-001).

How it works

  1. report / crash event
  2. intake & normalisation (strip secrets/PII, attach logs, version, environment)
  3. triage (classify type & severity, component, owner; embedding search for duplicates)
  4. completeness check (ask reporter for missing steps / versions)
  5. reproduction (agent writes failing test or script in a sandbox, runs it)
  6. localisation (stack trace + code search + git blame/bisect
  7. root-cause hypothesis)
  8. fix generation (patch + regression test, run full CI)
  9. verification (tests, static analysis, independent AI review, see CODE-003)
  10. draft PR + tracker update
  11. human review & merge
  • Triage: an LLM or small fine-tuned classifier plus embedding similarity over past issues; output is a suggestion with confidence, written as labels or a comment.
  • Reproduction: the most valuable and most reliable step; a failing test is a verifiable artifact, so the agent can iterate until the test fails for the right reason.
  • Localisation and repair: agentic loops (read files, grep, run tests, edit) or "agentless" pipelines (fixed localise-then-repair steps) that are cheaper and easier to audit.
  • Human-in-the-loop: low-confidence or security-labelled issues go to a person; every patch passes normal code review and CI; production deployment is never autonomous.

Data preparation

Bug triage works on data that already exists: issue tracker tickets, stack traces and logs from error monitoring, the repository and its test suite, plus CI results. In an SMB these sit in GitHub/GitLab/Jira, Sentry or log files, and sometimes in e-mail and chat from support.

Typical gaps: vague tickets without reproduction steps, duplicates, inconsistent labels, a missing or flaky test suite (the biggest blocker for automated fixes), logs containing customer data, and scattered knowledge about the architecture in individual heads.

Preparation steps: - Agree on a ticket template (steps, expected/actual, version, logs) and relabel the last 100-200 tickets (PREP-019, PREP-020). - Stabilise CI and remove flaky tests; add a reproduction harness for the main modules. - Add a short architecture and conventions file to each repository (PREP-013). - Scrub personal data from logs and attachments before they reach a model (PREP-022). - Limit agent tokens to the repositories and branches it may touch.

Effort share: low, around 10-20 %, as long as tests exist; without tests the effort rises sharply and should be done first. GUIDE-003 provides a checklist.

Implementation paths

Which path for whom

  • SMB: Path A, because mature EU-capable products (Copilot, Sentry Seer, JetBrains Junie, GitLab Duo) run on the existing tracker at SMB prices and the process is standard.
  • Enterprise: Path B, because bug triage is tied to internal trackers, CI and test infrastructure, and API volume plus governance justify an own orchestrated agent with EU-region models.
  • Developer: Path B, because a custom agent on the project's own tracker and test suite gives full control, while self-hosting needs HW4 and is rarely worth it for one person.
  • Error monitoring with built-in agents: Sentry Seer (root-cause analysis, Autofix, optional PR creation, hand-off to external coding agents) [2]; similar features exist in Datadog (Bits AI), Rollbar, Bugsnag.
  • Coding agents on the tracker: GitHub Copilot coding agent (assign an issue to Copilot), Claude Code (GitHub Action / CLI), OpenAI Codex, Cursor background agents, Devin (Cognition), Google Jules, Atlassian Rovo Dev, GitLab Duo Agent Platform.
  • Triage/support side: Jira, Linear and GitLab AI features for labelling and duplicate detection.
  • EU options: JetBrains (Prague) AI assistant and Junie agent, Mistral Code / Devstral-based tools, GitLab self-managed with EU hosting. Check EU data residency, retention and no-training terms.
  • Choose A when: code is on GitHub/GitLab cloud, tests exist and the team wants results in weeks.

Path B — Build on cloud APIs

  • Models: Claude, GPT, Gemini or Mistral (Codestral/Devstral) via EU regions (AWS Bedrock Frankfurt, Azure OpenAI EU, Vertex AI EU, Mistral La Plateforme); tool use / MCP for tracker, repository and CI.
  • Orchestration: Claude Agent SDK, OpenAI Agents SDK, LangGraph or a plain CI job triggered by a label such as ai-triage; sandboxes via containers or microVMs (e.g. E2B, Daytona, Firecracker).
  • Integration points: webhooks from Jira/GitHub/Sentry, repository checkout in an ephemeral sandbox with no production credentials, PR creation through a scoped bot account.
  • Choose B when: you need custom triage rules, an internal tracker, or specific compliance controls.

Path C — Self-host (open source)

  • Agents: OpenHands, SWE-agent / mini-SWE-agent, Agentless, Aider, Cline/Roo Code; SWE-bench harness for evaluation.
  • Open-weight models: Qwen3-Coder, Devstral (Mistral, EU), DeepSeek-V3.x/R1-class, GLM and Kimi-class coding models, served via vLLM or SGLang; embeddings via BGE/Qwen3-Embedding.
  • Hardware: HW4 for frontier-size coding models; HW3 for ~30B coding models, which handle triage and simple fixes but fail more often on multi-file bugs.
  • Choose C when: source code may not leave the premises (defence suppliers, banks, IP-sensitive firms).

Path D — Custom training

Usually unnecessary. Fine-tune a small classifier on historic labelled tickets (a few thousand) for routing and severity if LLM costs or latency matter. Training coding agents on your own issue→fix history (rejection-sampled trajectories) is possible but needs strong test coverage and a team with ML experience.

State of the art (2026)

  • Benchmarks: SWE-bench Verified is near saturation [1]; harder, contamination-resistant variants (SWE-bench Pro, multi-language and long-horizon suites) are replacing it. Treat leaderboard rank as a model-selection hint, not a prediction of your fix rate.
  • Techniques: test-first reproduction, execution feedback in sandboxes, localisation by code search and call graphs, multiple candidate patches ranked by tests, and an independent reviewer model.
  • Runtime context matters: agents connected to traces, logs, profiles and release data diagnose production errors far better than agents seeing only the source [2].
  • Open standards: MCP connectors to trackers and monitors; AGENTS.md or CLAUDE.md files hold build and test instructions for the agent.
  • Limits and failure modes: plausible patches that pass weak tests but do not fix the root cause (overfitting to tests); fixes of symptoms (null checks); weak performance on flaky, concurrency, hardware-dependent or UI bugs; reproduction impossible without data or environment; prompt injection through issue text from outside reporters; cost loops on hard bugs. Public benchmark patches have been found to be incorrect or incompletely tested even when marked "resolved" (see UTBoost) [3].

Shared resources & combinations

  • Same stack as CODE-002 (issue-to-PR agents), CODE-003 (review of the generated patch), CODE-004 (test generation), CODE-021 (bulk refactoring and upgrades).
  • Upstream: CODE-010 (incident detection and root cause), CODE-011 (log analysis), CODE-018 (tracing and evaluation of the agent itself).
  • Adjacent: SEC-004 (vulnerability fixes use the same repair loop with stricter review).
  • Shared infrastructure: sandbox runners, repository mirrors and a self-hosted coding-model server (HW3/HW4) can serve all of these.

Effort, cost & KPIs

  • Path A: days to weeks; per-seat or per-fix/credit pricing; autofix features often priced per active contributor.
  • Path B: 1–3 months for triage plus sandboxed reproduction, longer for reliable auto-fix; cost drivers are tokens per attempt (agent loops use many), sandbox minutes and CI load.
  • Path C: 2–4 months plus GPU operations.
  • KPIs: time to first triage, triage accuracy vs human labels, duplicate rate caught, share of reports with a reproduction, accepted-fix rate (merged without rework), reopened-bug rate, mean time to resolution, cost per merged fix, reviewer minutes per AI patch.

People & change

Involve: management (decision on autonomy level and budget), the development lead as process owner, developers as daily users, IT and IT security (tokens, repository permissions, sandboxing), and legal/compliance for licence and liability questions around generated code. The data protection officer is involved if logs or tickets contain customer data; an AVV with the vendor is required.

Works council: depends. The tool targets bugs, but trackers and agents log who reviewed, accepted or rejected what, and the BAG treats objective suitability for monitoring as sufficient, so §87(1) no. 6 BetrVG will usually apply as soon as per-person metrics exist. Inform early under §90(1) no. 3; an AI expert can be engaged under §80(3). Public sector: Personalrat. A short works agreement excluding individual performance evaluation settles most cases.

AI literacy: support the team with training on reviewing agent pull requests critically (GUIDE-006).

Pilot and communication: begin with a volunteer team, low-risk bug classes and the agent opening draft pull requests only. Typical concerns are job loss, deskilling and quality; address them openly (GUIDE-008) by showing the metrics and keeping developers as reviewers and mergers. Humans decide on every merge. For rollout see GUIDE-009.

Risks, regulation & compliance

  • EU AI Act: minimal risk for developer tooling; no Annex III category. AI literacy duty (Art. 4) applies. Code produced for safety components (medical, automotive, machinery) stays subject to the product law and its software lifecycle standards; the agent is a tool, the manufacturer remains responsible.
  • GDPR: bug reports and logs frequently contain personal data (user names, emails, IDs, IPs). Scrub before sending to external models, sign a DPA, choose EU regions and no-training terms; define retention for sandboxes and traces.
  • Cyber Resilience Act (Regulation (EU) 2024/2847): manufacturers of products with digital elements must handle vulnerabilities; AI-fixed security bugs still need documented handling and coordinated disclosure.
  • Security: prompt injection via issue text or logs, secrets leakage, agent with write access to main. Mitigate with sandboxes without production credentials, least-privilege bot tokens, branch protection, mandatory human review and egress allow-lists.
  • Quality risk: over-reliance on green tests; require a regression test per fix and a human check of the root cause.

Getting started

  1. Baseline: backlog size, triage time, share of reports without reproduction, reopened-bug rate.
  2. Start with read-only triage (labels, duplicates, missing-info comments) on one repository.
  3. Add reproduction: let an agent write a failing test in a sandbox for bugs labelled needs-repro.
  4. Pilot auto-fix on low-risk bug classes with good test coverage; keep PRs as drafts and track accepted-fix rate.
  5. Write AGENTS.md (build, test, conventions) and review sandbox permissions with security.

Sources

  1. Vals AI — SWE-bench Verified leaderboard and methodology (accessed 2026-10) — https://www.vals.ai/benchmarks/swebench
  2. Sentry — Seer AI debugging agent documentation — https://docs.sentry.io/ai/
  3. Wang et al. — UTBoost: Rigorous Evaluation of Coding Agents on SWE-Bench — https://arxiv.org/pdf/2506.09289
  4. SWE-bench project — https://www.swebench.com/
  5. OpenHands — open-source coding agent platform — https://github.com/All-Hands-AI/OpenHands
  6. SWE-agent — https://github.com/SWE-agent/SWE-agent
  7. Regulation (EU) 2024/1689 (AI Act) — https://eur-lex.europa.eu/eli/reg/2024/1689/oj
  8. Regulation (EU) 2024/2847 (Cyber Resilience Act) — https://eur-lex.europa.eu/eli/reg/2024/2847/oj