Source: Preliminary findings from the JetBrains Developer Ecosystem Survey 2026 • 15,000+ developers worldwide

Failure Mode
Consequence
Mitigation
Editing the wrong file
Fix doesn't address the root cause and may introduce new bugs
Require repository inspection before writes and diff review
Fixing symptoms, not causes
Problem recurs and code complexity increases
Structured task intake with root cause analysis step
Include style guide and conventions in agent context
Code fails review and style inconsistency accumulates
Ignoring project conventions
Full test suite run required before approval
Existing functionality breaks
Introducing regressions
Scope patches to the minimum necessary change
Large diffs are hard to review and risk surface increases
Over-broad refactors
Hard retry limit with developer escalation
Agent cycles indefinitely with no forward progress
Repeated failed test loops
Build and type checks catch most; tests catch the rest
Code references functions that don't exist
Hallucinated APIs
Approval gate on any dependency modification
Security vulnerabilities and breaking version constraints
Unsafe dependency changes
Treat repository content as untrusted input and keep approval gates on writes and terminal commands
Instructions hidden in code comments, issue text, or a dependency get followed as if you wrote them
Prompt injection via repository content
Less than feels natural to give it. A prototype's job is to tell you whether the agent reasons soundly about your codebase, and having it propose a patch without applying it answers that question with none of the risk. Widen the scope once the proposals have been right often enough to be boring, and keep the approval gate even then.
Track test pass rate before and after agent patches, regression rate, review acceptance rate, and time to a reviewable diff. Run the same representative task set across codebases so the comparison holds. Break the numbers out by bug fixes, refactoring, and test generation separately, since agents often perform differently across task types.
Exit codes and structured tool output beat parsing free-text model responses. For a test-writing agent, all tests passing is the right signal; for a refactoring agent, a linter exiting zero works well. Add a circuit breaker alongside the task-level condition: when the agent calls the same tool with the same arguments three times, it's looping, not working.
Reserve direct write access to the main and production branches for humans. Require approval for changes to CI/CD configuration, production environment variables, and dependency lock files. Keep secrets and credentials out of reach entirely. Give the agent isolated branches or worktrees you can discard when a run goes wrong.
Escalate on an exhausted retry limit, on a task ambiguous enough to need clarification, when the change would touch production configuration or security-sensitive code, or when the patch has grown too large to review at a glance. An agent that escalates well is more useful than one that pushes through to a harmful change.
Damaso Sanoja is an engineer who is passionate about helping others make data-driven decisions to achieve their goals. This has motivated him to write numerous articles on the most popular relational databases, customer relationship management systems, enterprise resource planning systems, master data management tools, and, more recently, data warehouse systems used for machine learning and AI projects. You can blame this fixation on data management on his first computer being a Commodore 64 without a floppy disk.
Continue Exploring the AI Agents for Developers Guide
Learn how AI agent orchestration works, from planning and task routing to state management, multi-agent coordination, and reliable workflow execution.
Explains how AI agent loops work, why infinite loops occur, and practical techniques for preventing runaway execution in production systems.
Explores AI agent architecture, including core components, planning, memory, tool use, orchestration, and design patterns for building reliable AI agents.