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
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
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
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.