← All finding types

unbounded_agent_loop

CWE-834 OWASP ASI08

Unbounded Agent Loop — a PullGuard finding type. Findings of this type appear in the PR comment, Step Summary, SARIF (GitHub Security tab / IDE viewers), and the HTML report, each with severity, location, and the remediation guidance below.

How to fix

Give every agent loop a finite budget — iterations, turns, and wall-clock low effort

# Before (VULNERABLE): unbounded — a hostile tool response loops forever
executor = AgentExecutor(agent=agent, tools=tools, max_iterations=None)

# After (SAFE): explicit budget sized for the task
executor = AgentExecutor(
    agent=agent, tools=tools,
    max_iterations=8,
    max_execution_time=60,
)

// LangChain JS:
const executor = new AgentExecutor({ agent, tools, maxIterations: 8 });

Triage

Suppress a confirmed non-issue with a committed .pullguardignore entry (pullguard ignore locally, or comment /pullguard ignore <fingerprint> <reason> on the PR — the fingerprint is printed in the PR comment’s Triage section). Entries support expiresAt for time-boxed snoozes.

Security findings at major or critical severity — and any critical finding — always surface: .pullguardignore cannot hide them. The reviewed paths that keep them visible are acknowledged (reviewed, stays in reports) and, for a confirmed false positive, a reasoned false_positive entry — visible and audited, excluded only from the merge block.