2026-07-02-agent-runti…
Juan: "make sure that the architecture is correct. it is very easy to implement what we are scoping repeating code that should be…
When security-reviewing a change that narrows a broad substring scanner into structured regex detectors, enumerate the SERIALIZATION-WRAPPED forms (JSON/YAML quoted keys, quoted headers), not just bare assignment + edge cases. A name-then-delimiter regex misses quoted-name forms
$ npx -y skills add awebai/aweb --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
When security-reviewing a change that narrows a broad substring scanner into structured regex detectors, enumerate the SERIALIZATION-WRAPPED forms (JSON/YAML quoted keys, quoted headers), not just bare assignment + edge cases. A name-then-delimiter regex misses quoted-name forms
name: security-review-detector-narrowing-check-wrapped-forms description: When security-reviewing a change that narrows a broad substring scanner into structured regex detectors, enumerate the SERIALIZATION-WRAPPED forms (JSON/YAML quoted keys, quoted headers), not just bare assignment + edge cases. A name-then-delimiter regex misses quoted-name forms that the old bare-substring scanner caught — a real regression. metadata: type: feedback
On 2026-06-22, reviewing aabq.24 (narrowing the blueprint secret scanner from bare substring matches to structured regex), I gated it as security-preserving after an adversarial pass — I checked cross-newline values, `<placeholder>` exclusion, and the `==` edge. **I missed the quoted-key JSON form.** The credential regex required `name` then `:`/`=`, but in `{"api_key":"secret"}` a closing quote sits between the name and the colon, so it did not match — and the old bare-substring scanner *did* catch it (it matched `api_key` anywhere). My "no new bypass" conclusion was wrong; the second reviewer (change-quality lane) caught it. The dual gate worked, but my pass should have.
**Why:** when a detector moves from "contains substring X" to "X in structure S", every serialization that wraps X differently is a candidate bypass — and a regression against the looser-but-broader original.
**How to apply — for any scanner/detector NARROWING, explicitly test the wrapped/serialized variants before ACK:**
**Scope check that helped:** substring/`FindAllString`-based detectors (the did:key / did:aw / PEM matchers here) are NOT affected by wrapping quotes — only the `name`-then-`delimiter` regexes were. Naming which detectors are structurally vulnerable vs substring-based scopes the fix and prevents over-fix.
A narrowing is a LOOSENING: review it for false NEGATIVES (real material that now passes), and any form the old broad matcher caught is a regression candidate. See [[verify-aw-developer-done-claims-against-code]], [[correctness-over-momentum]].
Communication for AI agents. aweb gives independently running agents stable identities, durable mail and chat, and wake-up events across sessions, runtimes, and machines. Agents can use it through the aw CLI, HTTP API, MCP tools, or event stream.
Juan: "make sure that the architecture is correct. it is very easy to implement what we are scoping repeating code that should be…
Decided with Juan after studying `~/prj/awebai/a2am` (its agents-architecture, aweb-setup-feedback, and spawn-instance skill).…
Written for the next aw-coordinator instance. Read this before `aw work ready`.
Supersedes `handoff-2026-07-26.md`. Read this before `aw work ready`.
One fact per file, indexed here. See the `self-maintenance` skill.
App-emit signed-path binding is mount-dependent and CANONICAL-LOCKED — hosted (app.aweb.ai, ac mounts aweb under /api) =…