Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
中文简介正在准备中。当前显示原文说明。
Use when a candidate finding falls into a noisy category - the do-not-report list, the precedents that settle recurring edge cases, and the narrow exceptions where an excluded category still counts
中文简介正在准备中。当前显示原文说明。
安装前可以查看交给 AI 代理的指令内容。
Some categories produce far more noise than signal in a diff review, or are handled by another process. They are excluded up front so you never spend a finding — or a developer's revision — on them. Precedents settle the cases that come up every week, so two reviews of the same pattern reach the same answer.
Core principle: an exclusion is not a judgement that the issue is harmless; it is a judgement that this review is the wrong place for it.
Availability and load
Hardening without a vulnerability
Out of this review's scope
unsafe blocks, cgo and FFI are in scope (native-memory-safety-and-ffi).Usually noise — only at very high confidence
child_process option).| Situation | Ruling |
|---|---|
| Logging a secret, token, password or session id | Vulnerability (CWE-532) |
| Logging a URL | Fine — unless the URL carries a token or credential in the query |
| UUIDv4 ids in URLs | Unguessable; enumeration is not the attack — the missing ownership check is |
| Values from environment variables, CLI flags, server config files | Trusted input |
| ORM query builders, parameterised SQL | Safe; raw/text()/string-built SQL is not |
| React, Vue, Angular, Svelte templates | Safe by default; only dangerouslySetInnerHTML, v-html, {@html}, bypassSecurityTrust*, direct DOM sinks count |
| Missing permission check in client-side JS/TS or a mobile UI | Not a finding — the server is the boundary; check the server |
| SSRF or path traversal in browser code | Not a finding — the browser is the attacker's own machine |
| SSRF where the attacker controls only the path, not host or scheme | Not reported |
Shell scripts and .ipynb notebooks | Injection only with a specific untrusted-input path into them |
| GitHub Actions inputs | Only when an untrusted event (fork PR, issue, comment) can trigger them; workflow_dispatch inputs come from people with write access |
| Resource leaks (unclosed files, connections) | Bugs, not vulnerabilities |
| Crashes, panics, 500s | Bugs, unless the error path itself leaks data or fails open |
| Hard-coded non-secret config (project ids, hostnames, public client ids) | Fine |
Dev fallback such as os.environ.get("SECRET_KEY", "dev") | Fine — unless production demonstrably runs without the variable set |
Publishable keys (Stripe pk_, Firebase web config, analytics write keys) | Fine by design |
| Secret in a test fixture | Excluded when it is a dummy or a documented test key; a real production credential pasted into a test is still a live secret |
| "Internal" service, private network, "only other services call it" | Not authentication. Judge by who can reach it; if that is decided outside the repository, it is a needs-validation note |
| JSON Schema, protobuf, zod, Pydantic or a typed DTO on the input | Proves shape, not authority, provenance or safe values |
A tenant_id / owner_id column on the record | Not isolation until a query, policy or key on this path enforces it |
| A secret reference (vault path, env var name, secret ARN, key id) | Not a disclosed secret |
| Missing cookie flags, missing MFA prompt, missing least privilege, missing pinning | Hardening, unless a concrete path uses the gap |
| A user installing a plugin, extension or script into their own app | Not a boundary |
| A file, token or config readable only by the same OS user | Not a finding — the attacker is the victim |
| Different responses that reveal whether a public account exists | Not a finding; an oracle on a protected predicate (another tenant's record, a hidden field's value) is |
Access-Control-Allow-Origin: * together with credentials | Browsers refuse it — the finding shape is a reflected or loosely matched origin with credentials |
| A system prompt or guardrail instruction | Not a control; tool permissions, scoping and approval are |
The upstream list excluded "user content in an AI system prompt". This agent does not keep that exclusion. Prompt injection IS a finding when the model that reads untrusted content also holds privileged tools, private data or an outbound channel: then the model is the attacker's instrument and the user or the organisation is the victim (llm-and-agent-security). Untrusted text reaching a model that can do nothing but answer the same user is still not a finding.
Test files excluded — but a diff that changes production behaviour behind a test-only flag reachable in production (if os.getenv("TEST_MODE") disabling auth) is production code.
Documentation excluded — but an agent instruction file (CLAUDE.md, AGENTS.md, .cursorrules, a prompt template) is configuration an LLM executes; a hidden instruction or a permission change there is in scope.
Hardening excluded — but removing an existing control (deleting CSRF middleware, setting verify=False, dropping HttpOnly) is a removed guard, judged by its concrete impact.
Availability excluded — but one bounded input (not sustained volume) is in scope when the effect is persistent, amplified onto everyone, or spends operator money without limit:
net/http recovers only the handler's own) or an unhandled rejection that kills the shared process, reachable from one request;Write the input-to-cost path: the input, the work it triggers, the missing bound, who else is affected, and how the system recovers. MEDIUM by default; HIGH when unauthenticated and persistent. A missing rate limit, a slow endpoint or "many requests could…" stays excluded.
pk_live_ or a Firebase web apiKey as a leaked secret.{userInput} in JSX as XSS.run_shell.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases
中文简介正在准备中。当前显示原文说明。
Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping
中文简介正在准备中。当前显示原文说明。
Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal
中文简介正在准备中。当前显示原文说明。
Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task
中文简介正在准备中。当前显示原文说明。
How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.
中文简介正在准备中。当前显示原文说明。
Use when the repository keeps its alerting in code, or a person asks for alerts outside TaskTrooper - PrometheusRule YAML, a Cloud Monitoring alert policy in Terraform, a Datadog monitor, each routed to TaskTrooper's alert ingest URL so it opens an incident here
中文简介正在准备中。当前显示原文说明。