Use cases
Pre-call guard for AI agents, n8n-style automation, business APIs, and scraping loops. Live demos call the API — click 11+ times on the same demo to trigger storm detection. Prefer a labeled walkthrough first? Runaway workflow simulator
Workflows that write to SAP, Salesforce, or internal billing APIs need the same guard as LLM tools — block repeated writes on the same business key before the next POST.
A stuck automation replays the same invoice or lead ID. Each pass triggers another paid ERP connector call or mutates production data.
Hash the business key (task_hash) and call /v1/check before the CRM/SAP node. Loop detection returns 429 before the write.
Illustrative policy labels like sensitive_endpoint_guard appear in the workflow simulator only — not in the live API response today.
A 403 or rate limit triggers automatic retries. Without a pre-call guard the scraper retries the same URL hundreds of times — each one counting against your quota.
Apify actor hits a 403, calls actor.retry(). Default retry config: 8 attempts per request. Across 100 URLs that's 800 wasted API calls before the job fails.
Each URL is hashed before fetching. After 10 retries of the same hash in 60s, loop_detected stops the actor and fires a webhook alert. The other 90 URLs continue normally.
const PG_KEY = process.env.PG_KEY; for (const url of urls) { const res = await fetch('https://governor.proceedgate.dev/v1/check', { method: 'POST', headers: { 'Authorization': `Bearer ${PG_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ agent_id: 'apify-scraper', task_hash: sha256(url), action: 'tool_call', }), }); if (res.status === 429) throw new Error('loop_detected'); const html = await fetch(url); }
Webhook → HTTP Request (ProceedGate) → IF → SerpAPI / OpenAI / CRM. Same task_hash for one lead or ticket stops the flow before the next paid node. See n8n guide.
In CrewAI or LangGraph, agents share a workspace. One stuck agent in a disambiguation loop consumes all remaining budget — the rest of the pipeline is starved and fails with no budget left.
Each agent identifies itself via agentId. Loop detection is per-agent, but budget is shared per workspace. The stuck agent is blocked while the others continue unaffected.
const PG_KEY = process.env.PG_KEY; async function check(agentId: string, action: string, taskHash: string) { const res = await fetch('https://governor.proceedgate.dev/v1/check', { method: 'POST', headers: { 'Authorization': `Bearer ${PG_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ agent_id: agentId, task_hash: taskHash, action, }), }); if (res.status === 429) throw new Error(`${agentId}: loop_detected`); return res.json(); } // each agent checks independently, budget is shared await check('researcher', 'tool_call', sha256(query)); await check('analyst', 'model_call', sha256(data)); await check('writer', 'model_call', sha256(draft));
An agent keeps enriching the same lead: SerpAPI → Firecrawl → OpenAI → CRM. One pre-call check per loop detects repeated task_hash before the next model or tool bill.
An agent using model_call enters a reasoning loop — same prompt, same context, same output, repeat. The LLM API doesn't know it's a loop. It just bills per token.
Every model call hashes the prompt context. After 10 identical hashes in 60s, the check returns loop_detected and stops the agent cold — before it burns through your monthly API budget.
const PG_KEY = process.env.PG_KEY; async function pgCheck(agentId: string, taskHash: string) { const res = await fetch('https://governor.proceedgate.dev/v1/check', { method: 'POST', headers: { 'Authorization': `Bearer ${PG_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ agent_id: agentId, task_hash: taskHash, action: 'model_call', }), }); if (!res.ok) throw new Error((await res.json()).error); return res.json(); // { allowed, proceed_token, zone, ... } } // before every GPT-4 call: const gate = await pgCheck('reasoning-agent', sha256(prompt)); if (!gate.allowed) throw new Error('loop_detected');
Feature matrix
All features are live in the free tier. No paid plan required to test loop detection or proceed tokens.
| Feature | AI workflow | n8n / auto | Scraping |
|---|---|---|---|
| Loop detection (>10 identical / 60s) | ✓ | ✓ | ✓ |
| Gray zone (6–10 repeats) | ✓ | ✓ | ✓ |
| Signed proceed token (ES256) | ✓ | ✓ | ✓ |
| Per-workspace budget cap | ✓ | ✓ | ✓ |
| Per-agent loop detection (shared workspace) | — | ✓ | — |
| Webhook alert on loop block | ✓ | ✓ | ✓ |
| Agent reputation scoring | ✓ | ✓ | ✓ |
No card required. The demos above use the real API — your integration will too.
Simulate workflow Join pilot