Node and agent config security
Security checks for Node apps and coding-agent config
15 checks cover Node application code and 10 cover coding-agent config. Each finding includes the line, confidence, and a fix. owlwarden turn reports only what this turn introduced.
npx owlwarden turn # what did this turn just introduce?
npx owlwarden scan # your app, whole
npx owlwarden vet . # your agent's config
Which of these did I just do?
Twenty-five rules on a six-month-old repository produce a backlog. The thing that actually happened is narrower: an agent changed seven files in the last thirty seconds. Of the findings now standing on them, some were there before the turn started and some were not, and only the second kind has an author who is still at the keyboard.
◉ᴥ◉ turn / 7 files / since HEAD a1b2c3d / 0.31s
✔ clean - nothing introduced
2 fixed / 5 carried (already at a1b2c3d, not this turn's)
Carried findings never fail a turn, at any threshold. There is no flag that changes it. A control that blocks on debt the turn did not create is a control somebody disables on the second day, and everything it would have caught goes with it. How the verdict works.
Known limits
Read these before treating a clean result as a clean repository.
| Limit | Why |
|---|---|
| 9 of 10 OWASP categories | A04 (Insecure Design) needs design context. See the full mapping. |
| Origin tracking is one hop | Not a full taint engine. Injection-shaped rules cap their confidence instead of guessing. |
Agent rules cap at likely | confirmed means corroborated against a running target, and a config file has none. |
| 25 rules, not thousands | Node web applications and agent configuration. Run Semgrep too. |
What gets scanned
15 rules read application code. 10 read agent config.
Agent rules cover files loaded from the working tree, including
.claude/settings.json,
.vscode/tasks.json, .cursor/hooks.json,
and CLAUDE.md. These files are not recorded in the lockfile.
Each finding includes a fix for the detected framework or agent host. The rule catalogue shows the tested examples.
Run it from agent hooks
owlwarden init wires gate after edits and before
shell commands, and turn at Stop. The
agent does not need to remember to call it. Carried findings never fail
the turn: an agent handed a repository's inherited debt starts fixing files
nobody asked it to touch.
owlwarden init --claude-code # Stop hook is turn --hook, not gate
owlwarden init --cursor
owlwarden init --generic # any host that can run a process
turn / Claude Code / Cursor / MCP / CI / vet / seal / exposure / runtimes / benchmark / Changelog
Common questions
Does owlwarden send my code anywhere?
No. There is no telemetry and no opt-in switch, because there is nothing to switch on. The threat model is on its own page.
Is it free?
MIT OR Apache-2.0, at your option. No account, no seat count, no hosted tier.
Does it replace my existing scanner?
No. Compare its scope with Semgrep, Snyk, model-based review, and eslint-plugin-security.
What changed in the last release?
1.3 added owlwarden turn: only the findings
this turn introduced. Carried findings never fail. The
changelog has the rest, and an
Atom feed.