Watch an agent get stopped.

$ npx @thsky-21/thskyshield-demo

An agent repeats itself and gets stopped — about four seconds, no signup, no API key.

What you'll see

The whole run, exactly as it prints.

$ npx @thsky-21/thskyshield-demo
Thskyshield — runaway agent demo
An agent gets stuck in a retry loop. Watch it get killed.
Loop gate 19 identical prompts
Iteration limit 50
Timeout 300s
Model gpt-4o
No account, no API key, no network — the governance engine
runs locally in this process.
────────────────────────────────────────────────────────────────
step 01 allowed █░░░░░░░░░░░ 5% of loop gate
step 02 allowed █░░░░░░░░░░░ 11% of loop gate
↳ loop detector: identical prompt ×2 of 19
step 03 allowed ██░░░░░░░░░░ 16% of loop gate
↳ loop detector: identical prompt ×3 of 19
step 04 allowed ███░░░░░░░░░ 21% of loop gate
↳ loop detector: identical prompt ×4 of 19
step 05 allowed ███░░░░░░░░░ 26% of loop gate
↳ loop detector: identical prompt ×5 of 19
step 06 allowed ████░░░░░░░░ 32% of loop gate
↳ loop detector: identical prompt ×6 of 19
step 07 allowed ████░░░░░░░░ 37% of loop gate
↳ loop detector: identical prompt ×7 of 19
step 08 allowed █████░░░░░░░ 42% of loop gate
↳ loop detector: identical prompt ×8 of 19
step 09 allowed ██████░░░░░░ 47% of loop gate
↳ loop detector: identical prompt ×9 of 19
step 10 allowed ██████░░░░░░ 53% of loop gate
↳ loop detector: identical prompt ×10 of 19
step 11 allowed ███████░░░░░ 58% of loop gate
↳ loop detector: identical prompt ×11 of 19
step 12 allowed ████████░░░░ 63% of loop gate
↳ loop detector: identical prompt ×12 of 19
step 13 allowed ████████░░░░ 68% of loop gate
↳ loop detector: identical prompt ×13 of 19
step 14 allowed █████████░░░ 74% of loop gate
↳ loop detector: identical prompt ×14 of 19
step 15 allowed █████████░░░ 79% of loop gate
↳ loop detector: identical prompt ×15 of 19
step 16 allowed ██████████░░ 84% of loop gate
↳ loop detector: identical prompt ×16 of 19
step 17 allowed ███████████░ 89% of loop gate
↳ loop detector: identical prompt ×17 of 19
step 18 allowed ███████████░ 95% of loop gate
↳ loop detector: identical prompt ×18 of 19
step 19 allowed ████████████ 100% of loop gate
↳ loop detector: identical prompt ×19 of 19
────────────────────────────────────────────────────────────────
KILLED step 20 — loop threshold reached
The step was denied before the model was called. 19 identical prompts in a row — the gate held.
Steps allowed 19 of 50
Loop gate 19 of 19 identical prompts
Killed by loop
Time to kill 4394 ms from run start
Prevented an unbounded retry loop — the same prompt, forever
────────────────────────────────────────────────────────────────
This agent asked the same question 19 times and never got
anywhere. Nothing in it was going to stop — no retry cap, no
convergence check, no notion of its own repetition. The loop
gate was the only thing that did.
See this for your own agents — thskyshield.com/start (free, no infra).

A real capture of the published package, not a mock-up. The model call is simulated so the demo needs no LLM key, but the prices come from the same registry this product bills against and the decision around each call is the real one. Your own run will differ in one place only: the milliseconds.

What the four seconds prove.

The loop is caught by prompt fingerprint

The prompt is hashed locally — the text itself is never stored or sent. The same fingerprint comes back every step, and the counter climbs from ×2 at step 02 to ×19 at step 19, against a gate of 19. Nothing inside the agent notices; the gate is what does.

Every step is on the record before it runs

Each step is checked and recorded as it happens — which boundary it was weighed against, and what the verdict was. By step 19 the run has 19 identical prompts behind it and one gate left to cross. You can see the decision forming line by line rather than reading about it afterwards.

The run is stopped before the next call fires

Step 20 was denied before the model was called — not logged after the fact. 19 identical prompts were allowed; the 20th never ran. That is the whole difference between a boundary and a report.

Now point it at your own agents.

That was a local simulation. Point it at your own agents and the same engine runs in observe mode — it records what it would do and totals what that would have saved, without touching your runs.

Already ran it? Wrap your own loop in about five minutes →