unsafe\s*\{No unsafe blocks. Use safe abstractions or re-architect.
Banned word patterns and error-swallowing detection rules. Each pattern is categorized by detection type and scoped to content, filename, or directory rules.
293 of 293 patterns
unsafe\s*\{No unsafe blocks. Use safe abstractions or re-architect.
mypy: ignore-errorsGlobal mypy ignores forbidden. Fix the types.
#\s*type:\s*ignoreType ignoring forbidden. Fix the code or architecture.
#\s*noqaLinter suppression forbidden. Fix the code style.
eslint-disableESLint suppression forbidden. Fix the code.
eslint-disable-next-lineESLint suppression forbidden. Fix the code.
\blist\[object\]list[object] provides zero type safety. Use list[str] or a proper model.
\bdict\[[^]]+,\s*object\]dict[..., object] is a lazy untyped dict. Use TypedDict, Pydantic model, or dataclass.
\bdict\[.*,\s*Any\]dict[..., Any] is a lazy untyped dict. Use TypedDict, Pydantic model, or dataclass.
\blist\[dict\]list[dict] has no type information. Use list[TypedDict] or list[Model].
\blist\[dict\[str,\s*object\]\]list[dict[str, object]] passes untyped data. Define a proper model or TypedDict.
\bdict\[str,\s*list\[dict\[str,\s*object\]\]\]dict[str, list[dict[str, object]]] passes untyped data. Define proper models.
\|\s*object\bUnion with | object makes the whole type equivalent to object. Remove it or use a proper type.
\bdelve\bAI slop. Use look at, dig into, or examine.
\bdelving\bAI slop. Use looking, digging, or examining.
\btapestry\bAI slop metaphor. Use mix, range, or blend.
\brealm\bAI slop. Use area, field, or domain.
\bleverage\bBusiness bullshit. Use use, apply, or build on.
\bleverages\bBusiness bullshit. Use uses, applies, or builds on.
\bleveraging\bBusiness bullshit. Use using, applying, or building on.
\bsynergBusiness bullshit. Use work together, combine, or reinforce.
\bholistic\bBusiness bullshit. Use full, complete, or end-to-end.
\bparadigm\bBusiness bullshit. Use model, pattern, or approach.
\bgroundbreaking\bAI slop hype. Use new, first, or name the specific advance.
\brevolutionary\bAI slop hype. Use new, or name what specifically changed.
\btransformative\bAI slop hype. Name what specifically changed.
\binnovative\bAI slop hype. Use different, new, or better.
\bcutting-edge\bAI slop hype. Use new, current, or name the advance.
\bgame-changer\bAI slop hype. Name the specific impact.
\bgame-changing\bAI slop hype. Name the specific impact.
\bstate-of-the-art\bAI slop hype. Use current, or name the advance.
\bseamless\bAI slop. Use smooth, easy, or name the integration point.
\bseamlessly\bAI slop. Use smoothly, easily, or name the integration point.
\brobust\bAI slop. Use reliable, solid, tested, or thorough.
\bempower\bBusiness bullshit. Use help, let, or allow.
\bempowers\bBusiness bullshit. Use helps, lets, or allows.
\bempowering\bBusiness bullshit. Use helping, letting, or allowing.
\bunleash\bAI slop. Use start, open, or activate.
\bunlocks?\bAI slop. Use get, start, or open.
\bharness\bAI slop. Use use, direct, or tap into.
\bharnesses\bAI slop. Use uses, directs, or taps into.
\bharnessing\bAI slop. Use using, directing, or tapping into.
\belevate\bBusiness bullshit. Use improve, raise, or strengthen.
\belevates\bBusiness bullshit. Use improves, raises, or strengthens.
\belevating\bBusiness bullshit. Use improving, raising, or strengthening.
\bfoster\bAI slop. Use build, create, or develop.
\bfosters\bAI slop. Use builds, creates, or develops.
\bfostering\bAI slop. Use building, creating, or developing.
\bcultivate\bAI slop. Use grow, develop, or invest in.
\bnurture\bAI slop. Use support, invest in, or pay attention to.
\bnavigate\bAI slop. Use handle, deal with, or work through.
\bnavigates\bAI slop. Use handles, deals with, or works through.
\bnavigating\bAI slop. Use handling, dealing with, or working through.
\butilize\bBusiness bullshit. Use use.
\butilizes\bBusiness bullshit. Use uses.
\butilizing\bBusiness bullshit. Use using.
\bfacilitate\bBusiness bullshit. Use help, run, or make easier.
\bfacilitates\bBusiness bullshit. Use helps, runs, or makes easier.
\bfacilitating\bBusiness bullshit. Use helping, running, or making easier.
\bmoreover\bAI slop transition. Use also, and, or on top of that.
\bfurthermore\bAI slop transition. Use also, and, or on top of that.
\bnevertheless\bAI slop transition. Use still, but, or even so.
\bunderscore\bAI slop. Use show, prove, highlight, or make clear.
\bunderscores\bAI slop. Use shows, proves, highlights, or makes clear.
\bunderscoring\bAI slop. Use showing, proving, highlighting, or making clear.
\bshowcase\bAI slop. Use show, display, or present.
\bshowcases\bAI slop. Use shows, displays, or presents.
\bshowcasing\bAI slop. Use showing, displaying, or presenting.
\bintricate\bAI slop. Use detailed, complex, or specific.
\bpivotal\bAI slop. Use key, important, or central.
\bmultifaceted\bAI slop. Use varied, complex, or name the facets.
\bmyriad\bAI slop. Use many, lots of, or name them.
\bplethora\bAI slop. Use many, lots of, or name them.
\bunprecedented\bAI slop. Use new, first, or name the prior baseline.
\bunparalleled\bAI slop. Use unmatched, or name the comparison.
\bparamount\bAI slop. Use top priority, critical, or essential.
\bbespoke\bBusiness bullshit. Use custom, tailored, or specific.
\bactionable\bBusiness bullshit. Use concrete, specific, or practical.
\bcomprehensive\bAI slop. Use complete, full, or thorough.
\bvibrant\bAI slop. Use active, lively, or name the evidence.
\bdynamic\bAI slop. Use active, changing, or name the behavior.
\bmeticulous\bAI slop. Use careful, thorough, or precise.
\bnuanced\bAI slop. Use subtle, detailed, or explain the nuance.
\btestament\bAI slop. Use shows, proves, or demonstrates.
\bbeacon\bAI slop metaphor. Use signal, guide, or example.
\bembark\bAI slop. Use start, begin, or launch.
\bendeavor\bAI slop. Use effort, project, or attempt.
\bproactive\bBusiness bullshit. Use anticipatory, or name the action.
\bscalable\bBusiness bullshit. Use grows with load, or name the capacity.
\bstreamline\bBusiness bullshit. Use simplify, speed up, or cut steps.
\bstreamlines\bBusiness bullshit. Use simplifies, speeds up, or cuts steps.
\bstreamlining\bBusiness bullshit. Use simplifying, speeding up, or cutting steps.
\bethos\bBusiness bullshit. Use culture, values, or character.
\bzeitgeist\bBusiness bullshit. Use trend, mood, or spirit of the times.
\bcornerstone\bAI slop metaphor. Use foundation, basis, or core.
\bhallmark\bAI slop. Use sign, feature, or characteristic.
\bnexus\bAI slop. Use hub, link, or connection.
\bmosaic\bAI slop metaphor. Use mix, patchwork, or collection.
\blabyrinth\bAI slop metaphor. Use maze, tangle, or complex system.
\btrajectory\bAI slop. Use path, course, or direction.
\bfrontier\bAI slop metaphor. Use edge, boundary, or new area.
\bwhilst\bAI slop. Use while.
\bdeep[ -]dive\bAI slop. Use examine, look at, or cover.
\bunpack\bAI slop. Use explain, break down, or cover.
\bshed light on\bAI slop. Use explain, show, or clarify.
\bdisruptive\bBusiness bullshit. Use new, or name the structural change.
\bdisrupt\bBusiness bullshit. Use change, replace, or name the impact.
\bdisrupts\bBusiness bullshit. Use changes, replaces, or names the impact.
\bfrictionless\bBusiness bullshit. Use smooth, easy, or name what was removed.
\bmoat\bBusiness bullshit. Use barrier, advantage, or name the asset.
\bflywheel\bBusiness bullshit. Use feedback loop, or name the mechanism.
\bagentic\bAI slop. Use autonomous, agent-driven, or name the behavior.
\bvibe[ -]codAI slop. Use AI-assisted coding, or describe the workflow.
\bAI-powered\bBusiness bullshit. Name the model, task, and accuracy.
\bAI-native\bBusiness bullshit. Name the model, dataset, and workflow.
\bshift[ -]left\bBusiness bullshit. Use test earlier, or name the specific move.
\b10x\bBusiness bullshit. Name the dimension and baseline.
\bunmissable\bAI slop hype. Use important, or name why it matters.
\beffortless\bAI slop. Name what is hard about the alternative.
\bcatalyze\bAI slop. Use drive, spark, start, or trigger.
\bcatalyzes\bAI slop. Use drives, sparks, starts, or triggers.
\bamplify\bAI slop. Use increase, boost, or strengthen.
\bamplifies\bAI slop. Use increases, boosts, or strengthens.
\bbolster\bAI slop. Use strengthen, support, or reinforce.
\bbolsters\bAI slop. Use strengthens, supports, or reinforces.
\bspearhead\bBusiness bullshit. Use lead, drive, or head.
\bspearheads\bBusiness bullshit. Use leads, drives, or heads.
\bunlock\bAI slop. Use get, start, or open.
\bsmoke\bBusiness bullshit test branding. Use sanity check or basic check.
\bload-bearing\bBusiness bullshit metaphor. Use critical, essential, or core.
in today.s (fast-paced|modern|digital|ever-evolving)AI slop opener. Start with the actual point.
it is (worth noting|important to note|important to remember) thatAI slop hedge. Just say the thing.
it's (worth noting|important to note|important to remember) thatAI slop hedge. Just say the thing.
in the realm ofAI slop. Use in, or name the area directly.
when it comes toAI slop. Name the thing directly.
at the end of the dayAI slop hedge. Make the concluding statement directly.
at its coreAI slop. Use simply, basically, or just define it.
plays a (crucial|vital|significant|key) roleAI slop. Name the specific contribution.
crucial role in shapingAI slop. Name what it actually shapes and how.
navigate the complexitAI slop. Use deal with, handle, or work through.
harness the power ofAI slop. Use use, or name the specific capability.
embark on a journeyAI slop. Use start, begin, or launch.
unlock (your|its) potentialAI slop. Name what becomes available.
bridge the gapBusiness bullshit. Name the two things and the connection.
move the needleBusiness bullshit. Name the metric and the change.
low-hanging fruitBusiness bullshit. Name the easy wins specifically.
think outside the boxBusiness bullshit. Describe the actual approach.
win-winBusiness bullshit. Name both benefits explicitly.
best practicesBusiness bullshit. Use what works, or name the practice.
value propositionBusiness bullshit. Use offer, or name the value.
pain pointsBusiness bullshit. Use problems, frustrations, or what is broken.
north starBusiness bullshit. Use goal, target, or primary objective.
double-edged swordAI slop. State the actual trade-off.
in conclusionAI slop. Cut it, or reframe the final point.
to summarizeAI slop. Cut it; the reader already read it.
to wrap things upAI slop. Cut it; the reader already read it.
in summaryAI slop. Cut it; the reader already read it.
I hope this helpsAI slop sign-off. Cut it entirely.
feel free to reach outAI slop sign-off. Cut it entirely.
do not hesitate to contactAI slop sign-off. Cut it entirely.
happy (to help|coding|hacking)AI slop sign-off. Cut it entirely.
best of luckAI slop sign-off. Cut it entirely.
great questionAI slop sycophantic opener. Just answer.
that's a (fantastic|great|wonderful) pointAI slop sycophantic opener. Respond directly.
as an AI language modelChatbot residue. Cut it entirely.
certainly[!,]AI slop sycophantic opener. Cut it.
of course[!,]AI slop sycophantic opener. Cut it.
absolutely[!,]AI slop sycophantic opener. Cut it.
\bsilentNo silent anything. Log errors or fail explicitly.
\bfallback\bNo fallback code. Fix properly or fail explicitly.
\bfalling\bAvoid 'falling back' patterns.
\bbackwards\bNo backwards compatibility hacks.
\bcompatibility\bNo compatibility shims.
\bdegradation\bNo graceful degradation. Fail fast.
\blegacy\bNo legacy code paths.
\bshims?\bNo shim layers.
\bstubs?\bNo stub implementations.
\bskeleton\bNo skeleton code.
\bplaceholders?\bNo placeholder code.
\bmock\bNo mock objects in production code.
\blazy\bNo lazy evaluation hacks.
\bmaybe\bNo uncertain code paths.
\.suppressNo suppression of errors/warnings.
\bgetattr\(getattr is unsafe. Use explicit attribute access.
\bsetattr\(setattr is unsafe. Use explicit attribute assignment.
\bhasattr\(hasattr is unsafe. Use explicit checks or protocols.
\.__dict__Direct dict access forbidden. Use proper interfaces.
\bvars\(vars() is unsafe reflection.
\bimportlib\bDynamic imports forbidden. Use explicit imports.
@dataclassUse Pydantic models instead of dataclasses.
\bxfail\bNo xfail tests. Fix the code, remove the test, or write a proper assertion.
/home/No hardcoded home paths. Use environment variables.
\.parent\.parentFragile path navigation. Use explicit paths.
\.parents\[Fragile path navigation. Use explicit paths.
\.parent\.resolveFragile path navigation. Use explicit paths.
uuid\.uuid[134568]\(Only uuid7 allowed. Use uuid_utils.uuid7().
\buuid[134568]\(\)Only uuid7 allowed. Use uuid_utils.uuid7().
:latest\bPin container versions. No :latest tags.
\bpython3?\bUse uv run python for hermetic execution. No bare python/python3 calls.
\.venv/bin/pythonUse uv run python (own repo) or uv run --project --no-sync python (cross-repo). Never .venv/bin/python.
pattern:\s*'\.\*'Catch-all regex pattern '.*' in a pattern field. Use per-pattern scoped exceptions only.
pattern:\s*"\.\*"Same as single-quoted .* form. No catch-all pattern keys.
pattern:\s*'\.\+'Catch-all regex pattern '.+' evades the .* ban. Use per-pattern scoped exceptions only.
pattern:\s*"\.\+"Same as single-quoted .+ form. No catch-all pattern keys.
self\.get\(Avoid dict-like self.get(). Use explicit attributes.
self\.set\(Avoid dict-like self.set(). Use explicit attributes.
-- ASCII em-dash punctuation forbidden. Use commas, colons, or parentheses.
\u2014Unicode em-dash (U+2014) forbidden. Use commas, colons, or parentheses.
\u2013Unicode en-dash (U+2013) forbidden. Use ASCII hyphen (-) for ranges.
reason=.*not implemented yetImplement the test or delete it.
_v[0-9]+No versioned filenames. Use git.
_old\.No _old files. Delete or rename properly.
_new\.No _new files. Rename to final name.
_fixed\.No _fixed files. Replace original.
_temp\.No temp files in repo.
_tmp\.No tmp files in repo.
_backup\.No backup files. Use git.
_copy\.No copy files. Consolidate.
_final\.No _final files. Just use the real name.
\.(old|new|backup|bak|orig)$No backup extensions. Use git.
\|\|\s*true\bPipe-to-true masks command failure; the exit code is discarded.
\|\|\s*:\s*$Pipe-to-colon (no-op) masks command failure silently.
\|\|\s*\\\s*$Line-continuation after || hides the true command on the next line.
\|\s*(?:tail|head|cat|true|:)\b[^|]*$Piping through tail/head/cat/true masks the upstream exit code.
2>\s*/dev/nullRedirects stderr to /dev/null, hiding error output from the operator.
(?:^|\s)--(?:quiet|silent)(?:\s|$)Long quiet/silent flag suppresses failure context; capture output and print it on failure instead.
\b(?:apt|apt-get|systemctl|pytest|uv|cloc|cargo|npm|npx|pip|pip3|dpkg)\b[^\n|;]*\s-[a-zA-Z]*q[a-zA-Z]*(?:\s|$)Short -q on a noisy tool hides failure context (grep -q is exempt: it is the canonical exit-status idiom).
^\s*set\s+\+[eE]\bDisables errexit (set +e), allowing failures to propagate silently.
^\s*trap\s+(''?|:\\|:\s*'?)\s+ERR\bERR trap set to a no-op (:), swallowing trap-based error reporting.
^\s*[^#\s&]+\s*&(?:\s*#.*)?$Background process launched without wait; failure is never observed.
2>\s*/dev/stderr\s*$Redirects stderr to /dev/stderr in a context that suppresses real output.
^\s*(?:\.|source)\s+\S(?!.*\|\|\s*(?:exit|return))Sources a file without guarding against failure; sourced errors vanish.
\|\|\s*(?:echo|printf)\bEcho on failure replaces proper error handling; the exit code is lost.
if\s+.+\s*;\s*then\s*:\s*;?\s*fiEmpty if body (colon no-op) discards command-substitution failure under set -e.
^\t@?true\s*(?:#.*)?$Make recipe that succeeds without doing work; masks missing/wrong targets.
>\s*/dev/nullRedirects stdout to /dev/null, hiding command output from the operator.
&>\s*/dev/nullRedirects stdout and stderr to /dev/null in one shot.
curl\b[^\n;]*\s-s\b[^\n;]*-o\s*/dev/nullcurl -s discards errors and writes the body to /dev/null.
^(?!\s*#)(?!\s*echo\b).*(?:"\$\{PODMAN\}"\s+build\b|\bpodman\s+build\b)(?![^\n]*--progress=plain)podman build without --progress=plain buffers RUN output until the step ends.
^\t@Make @ prefix hides the recipe command from the operator.
curl\b[^\n]*\s-s(?!S)curl -s without -S hides errors on stderr; use -sS or capture stderr explicitly.
npm\b[^\n]*(?:--silent\b|--loglevel\s+(?:silent|error)\b)npm --silent or quiet loglevel hides install failure context.
\}\s*catch\s*\([^)]*\)\s*\{\s*\}Empty catch block swallows the error with no logging or re-throw.
\}\s*catch\s*\{\s*(?:/\*[^*]*\*/\s*)?\}Parameterless empty catch block silently discards all exceptions.
\}\s*catch\s*\([^)]*\)\s*\{\s*/\*[^*]*\*/\s*\}Catch block contains only a comment; no error handling logic.
\.catch\(\s*\(\s*[A-Za-z_$]?[\w$]*\s*\)\s*=>\s*\{?\s*\}?\s*\)Arrow-function .catch() with empty body swallows promise rejections.
\.catch\(\s*function\s*\([^)]*\)\s*\{\s*\}\s*\)Function .catch() with empty body swallows promise rejections.
\.catch\(\s*(?:\(\s*[A-Za-z_$][\w$]*\s*\)|\s*[A-Za-z_$][\w$]*\s*|\(\s*\))\s*=>\s*(?:null|undefined|void\s+0)\s*\)Catch returns null/undefined/void 0, hiding the original error.
^\s*except\b[^:]*:\s*pass\s*(#.*)?$Inline except: pass swallows the exception with no handling.
^\s*except\b[^:]*:\s*continue\s*(#.*)?$Inline except: continue skips the iteration on error, hiding failures.
^\s*except\b[^:]*:\s*return(\s+None)?\s*(#.*)?$Inline except: return None hides the exception from the caller.
^\s*except\b[^:]*:\s*\.\.\.\s*(#.*)?$Inline except: ... (Ellipsis) is a no-op that swallows the error.
\bcontextlib\.suppress\(contextlib.suppress() explicitly silences exceptions by type.
^\s*from\s+contextlib\s+import\s+[^#\n]*\bsuppress\bImporting suppress from contextlib signals intent to silence errors.
\bsubprocess\.(?:run|call)\s*\([^)]*\bcheck\s*=\s*Falsesubprocess with check=False ignores non-zero exit codes.
^\s*check\s*=\s*False\s*,?\s*(?:#.*)?$Multiline subprocess call with check=False on its own line.
if\s+not\s+\w+\s+and\s+(?:component\.)?detect_path\bConditional path detection that hides the reason a path was missing.
\.strip\(\)\s*or\s*\"[^\"]*\"(?!\s*raise)strip() or literal hides parse failures by returning a default value.
stdin\s*=\s*subprocess\.DEVNULLsubprocess with stdin=DEVNULL discards stdin; can hide interactive prompts and errors.
\|\|\s*true\bAnsible shell command pipes to true, masking task failure.
\|\|\s*:\s*$Ansible shell command pipes to colon (no-op), masking task failure.
^\s*ignore_errors:\s*yes\bignore_errors: yes lets a failed task pass without interruption.
2>\s*/dev/null(?!\s*\|\|\s*(?:echo|printf)\b)Ansible shell redirects stderr to /dev/null without a log redirect.
^\s*failed_when:\s*false\s*(?:#.*)?$failed_when: false makes a task never fail; non-zero exit codes silently become ok.
StandardOutput\s*=\s*journalService logs stdout only to journald; terminal operators see nothing.
cron-no-log-redirectCron job without a log redirect; output and errors are lost to the void.
py-except-passExcept block that swallows errors with a bare pass statement.
py-except-continueExcept block that swallows errors with a bare continue statement.
py-except-ellipsisExcept block that swallows errors with Ellipsis (...).
py-except-return-noneExcept block returns None, hiding the exception from the caller.
py-except-empty-bodyExcept block with an empty body; no error handling at all.
py-except-debug-onlyExcept block only logs at debug level; the error is not surfaced.
py-except-raise-no-fromExcept block raises a new exception without chaining (no from clause).
py-except-silent-exitExcept block calls sys.exit(0), terminating with success on error.
py-except-printExcept block only prints the error; no logging, re-raise, or recovery.
js-catch-silent-return-multiMulti-line catch block that returns a nullish value, hiding the error.
ansible-shell-no-registerAnsible shell/command task with changed_when:false but no register or failed_when.
ansible-shell-no-guardAnsible shell/command task without register or failed_when guard.
ansible-register-output-swallowedAnsible task registers output but only displays it on failure, or never displays it at all; the output is silently discarded.
sh-if-then-colon-noopMulti-line if/then with colon no-op body; set -e evasion around command substitution.
sh-stderr-temp-discardStderr redirected to a temp path variable without rc capture on the same or next lines.
sh-pipe-tee-no-pipestatusPipe to tee without checking PIPESTATUS[0]; upstream command failure can be masked.
sh-build-log-not-surfacedFailure message references BUILD_LOG but does not tail/cat the log for the operator.
sh-bootstrap-gap-no-logBootstrap script runs tar/install/curl/uv sync after _log with no progress log before the blocking step.
js-warn-return-softfailconsole.warn followed by return exits 0 without surfacing a hard failure.
js-warn-skip-returnconsole.warn with "skipping" then return hides a missing dependency.
js-warn-batch-no-exitBatch failure summary warns but exits 0; prod prebuild should hard-fail.
js-catch-return-softCatch block warns then returns a soft value without throw or process.exit.
js-warn-keep-existingconsole.warn keeps existing asset on failure path without prod hard-fail guard.
py-capture-output-unsurfacedsubprocess capture_output=True without printing stderr or re-raising within the block.
py-subprocess-pipe-no-progresssubprocess stdout=PIPE (or PIPE alias) on a long wrapper with no stderr progress banner before the call.
container-run-chained-no-traceContainerfile RUN chains multiple commands without echo or set -x trace markers.
container-run-step-missing-echoTraced RUN chain lacks echo before tar/npm/uv/bash scripts step.