Skip to content
workspaceguardrails
  • Home
  • Open Source[4]
  • System Policies[0]
  • Git Hooks[21]
  • Anti-Patterns[293]
  • Hook Configs[20]
  • Sandbox Configs[27]
  • Tools & Scripts[14]
  • AI Governance[20]
  • LLM Gateway
  • Static Analysis
  • Playground
  • Integration Guide
  1. Home
  2. Anti-Patterns
    The Digital and AI Workspace Guardrails Platform2026 ◆ Independent AI Labs
    Skip to content
    workspaceguardrails
    • Home
    • Open Source[4]
    • System Policies[0]
    • Git Hooks[21]
    • Anti-Patterns[293]
    • Hook Configs[20]
    • Sandbox Configs[27]
    • Tools & Scripts[14]
    • AI Governance[20]
    • LLM Gateway
    • Static Analysis
    • Playground
    • Integration Guide
    1. Home
    2. Anti-Patterns
      The Digital and AI Workspace Guardrails Platform2026 ◆ Independent AI Labs
      Skip to content
      workspaceguardrails
      • Home
      • Open Source[4]
      • System Policies[0]
      • Git Hooks[21]
      • Anti-Patterns[293]
      • Hook Configs[20]
      • Sandbox Configs[27]
      • Tools & Scripts[14]
      • AI Governance[20]
      • LLM Gateway
      • Static Analysis
      • Playground
      • Integration Guide
      1. Home
      2. Anti-Patterns

        Pattern Library

        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.

        Category
        Linter Suppression

        Share feedback

        You voted thumbs down

        mypy: ignore-errors

        Global mypy ignores forbidden. Fix the types.

        Category
        Linter Suppression

        Share feedback

        You voted thumbs down

        #\s*type:\s*ignore

        Type ignoring forbidden. Fix the code or architecture.

        Category
        Linter Suppression

        Share feedback

        You voted thumbs down

        #\s*noqa

        Linter suppression forbidden. Fix the code style.

        Category
        Linter Suppression

        Share feedback

        You voted thumbs down

        eslint-disable

        ESLint suppression forbidden. Fix the code.

        Category
        Linter Suppression

        Share feedback

        You voted thumbs down

        eslint-disable-next-line

        ESLint suppression forbidden. Fix the code.

        Category
        Linter Suppression

        Share feedback

        You voted thumbs down

        \blist\[object\]

        list[object] provides zero type safety. Use list[str] or a proper model.

        Category
        Deferred Types

        Share feedback

        You voted thumbs down

        \bdict\[[^]]+,\s*object\]

        dict[..., object] is a lazy untyped dict. Use TypedDict, Pydantic model, or dataclass.

        Category
        Deferred Types

        Share feedback

        You voted thumbs down

        \bdict\[.*,\s*Any\]

        dict[..., Any] is a lazy untyped dict. Use TypedDict, Pydantic model, or dataclass.

        Category
        Deferred Types

        Share feedback

        You voted thumbs down

        \blist\[dict\]

        list[dict] has no type information. Use list[TypedDict] or list[Model].

        Category
        Deferred Types

        Share feedback

        You voted thumbs down

        \blist\[dict\[str,\s*object\]\]

        list[dict[str, object]] passes untyped data. Define a proper model or TypedDict.

        Category
        Deferred Types

        Share feedback

        You voted thumbs down

        \bdict\[str,\s*list\[dict\[str,\s*object\]\]\]

        dict[str, list[dict[str, object]]] passes untyped data. Define proper models.

        Category
        Deferred Types

        Share feedback

        You voted thumbs down

        \|\s*object\b

        Union with | object makes the whole type equivalent to object. Remove it or use a proper type.

        Category
        Deferred Types

        Share feedback

        You voted thumbs down

        \bdelve\b

        AI slop. Use look at, dig into, or examine.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bdelving\b

        AI slop. Use looking, digging, or examining.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \btapestry\b

        AI slop metaphor. Use mix, range, or blend.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \brealm\b

        AI slop. Use area, field, or domain.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bleverage\b

        Business bullshit. Use use, apply, or build on.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bleverages\b

        Business bullshit. Use uses, applies, or builds on.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bleveraging\b

        Business bullshit. Use using, applying, or building on.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bsynerg

        Business bullshit. Use work together, combine, or reinforce.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bholistic\b

        Business bullshit. Use full, complete, or end-to-end.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bparadigm\b

        Business bullshit. Use model, pattern, or approach.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bgroundbreaking\b

        AI slop hype. Use new, first, or name the specific advance.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \brevolutionary\b

        AI slop hype. Use new, or name what specifically changed.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \btransformative\b

        AI slop hype. Name what specifically changed.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \binnovative\b

        AI slop hype. Use different, new, or better.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bcutting-edge\b

        AI slop hype. Use new, current, or name the advance.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bgame-changer\b

        AI slop hype. Name the specific impact.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bgame-changing\b

        AI slop hype. Name the specific impact.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bstate-of-the-art\b

        AI slop hype. Use current, or name the advance.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bseamless\b

        AI slop. Use smooth, easy, or name the integration point.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bseamlessly\b

        AI slop. Use smoothly, easily, or name the integration point.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \brobust\b

        AI slop. Use reliable, solid, tested, or thorough.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bempower\b

        Business bullshit. Use help, let, or allow.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bempowers\b

        Business bullshit. Use helps, lets, or allows.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bempowering\b

        Business bullshit. Use helping, letting, or allowing.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bunleash\b

        AI slop. Use start, open, or activate.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bunlocks?\b

        AI slop. Use get, start, or open.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bharness\b

        AI slop. Use use, direct, or tap into.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bharnesses\b

        AI slop. Use uses, directs, or taps into.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bharnessing\b

        AI slop. Use using, directing, or tapping into.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \belevate\b

        Business bullshit. Use improve, raise, or strengthen.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \belevates\b

        Business bullshit. Use improves, raises, or strengthens.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \belevating\b

        Business bullshit. Use improving, raising, or strengthening.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bfoster\b

        AI slop. Use build, create, or develop.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bfosters\b

        AI slop. Use builds, creates, or develops.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bfostering\b

        AI slop. Use building, creating, or developing.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bcultivate\b

        AI slop. Use grow, develop, or invest in.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bnurture\b

        AI slop. Use support, invest in, or pay attention to.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bnavigate\b

        AI slop. Use handle, deal with, or work through.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bnavigates\b

        AI slop. Use handles, deals with, or works through.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bnavigating\b

        AI slop. Use handling, dealing with, or working through.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \butilize\b

        Business bullshit. Use use.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \butilizes\b

        Business bullshit. Use uses.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \butilizing\b

        Business bullshit. Use using.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bfacilitate\b

        Business bullshit. Use help, run, or make easier.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bfacilitates\b

        Business bullshit. Use helps, runs, or makes easier.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bfacilitating\b

        Business bullshit. Use helping, running, or making easier.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bmoreover\b

        AI slop transition. Use also, and, or on top of that.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bfurthermore\b

        AI slop transition. Use also, and, or on top of that.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bnevertheless\b

        AI slop transition. Use still, but, or even so.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bunderscore\b

        AI slop. Use show, prove, highlight, or make clear.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bunderscores\b

        AI slop. Use shows, proves, highlights, or makes clear.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bunderscoring\b

        AI slop. Use showing, proving, highlighting, or making clear.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bshowcase\b

        AI slop. Use show, display, or present.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bshowcases\b

        AI slop. Use shows, displays, or presents.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bshowcasing\b

        AI slop. Use showing, displaying, or presenting.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bintricate\b

        AI slop. Use detailed, complex, or specific.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bpivotal\b

        AI slop. Use key, important, or central.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bmultifaceted\b

        AI slop. Use varied, complex, or name the facets.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bmyriad\b

        AI slop. Use many, lots of, or name them.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bplethora\b

        AI slop. Use many, lots of, or name them.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bunprecedented\b

        AI slop. Use new, first, or name the prior baseline.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bunparalleled\b

        AI slop. Use unmatched, or name the comparison.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bparamount\b

        AI slop. Use top priority, critical, or essential.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bbespoke\b

        Business bullshit. Use custom, tailored, or specific.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bactionable\b

        Business bullshit. Use concrete, specific, or practical.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bcomprehensive\b

        AI slop. Use complete, full, or thorough.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bvibrant\b

        AI slop. Use active, lively, or name the evidence.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bdynamic\b

        AI slop. Use active, changing, or name the behavior.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bmeticulous\b

        AI slop. Use careful, thorough, or precise.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bnuanced\b

        AI slop. Use subtle, detailed, or explain the nuance.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \btestament\b

        AI slop. Use shows, proves, or demonstrates.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bbeacon\b

        AI slop metaphor. Use signal, guide, or example.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bembark\b

        AI slop. Use start, begin, or launch.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bendeavor\b

        AI slop. Use effort, project, or attempt.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bproactive\b

        Business bullshit. Use anticipatory, or name the action.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bscalable\b

        Business bullshit. Use grows with load, or name the capacity.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bstreamline\b

        Business bullshit. Use simplify, speed up, or cut steps.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bstreamlines\b

        Business bullshit. Use simplifies, speeds up, or cuts steps.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bstreamlining\b

        Business bullshit. Use simplifying, speeding up, or cutting steps.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bethos\b

        Business bullshit. Use culture, values, or character.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bzeitgeist\b

        Business bullshit. Use trend, mood, or spirit of the times.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bcornerstone\b

        AI slop metaphor. Use foundation, basis, or core.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bhallmark\b

        AI slop. Use sign, feature, or characteristic.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bnexus\b

        AI slop. Use hub, link, or connection.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bmosaic\b

        AI slop metaphor. Use mix, patchwork, or collection.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \blabyrinth\b

        AI slop metaphor. Use maze, tangle, or complex system.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \btrajectory\b

        AI slop. Use path, course, or direction.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bfrontier\b

        AI slop metaphor. Use edge, boundary, or new area.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bwhilst\b

        AI slop. Use while.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bdeep[ -]dive\b

        AI slop. Use examine, look at, or cover.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bunpack\b

        AI slop. Use explain, break down, or cover.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bshed light on\b

        AI slop. Use explain, show, or clarify.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bdisruptive\b

        Business bullshit. Use new, or name the structural change.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bdisrupt\b

        Business bullshit. Use change, replace, or name the impact.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bdisrupts\b

        Business bullshit. Use changes, replaces, or names the impact.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bfrictionless\b

        Business bullshit. Use smooth, easy, or name what was removed.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bmoat\b

        Business bullshit. Use barrier, advantage, or name the asset.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bflywheel\b

        Business bullshit. Use feedback loop, or name the mechanism.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bagentic\b

        AI slop. Use autonomous, agent-driven, or name the behavior.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bvibe[ -]cod

        AI slop. Use AI-assisted coding, or describe the workflow.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bAI-powered\b

        Business bullshit. Name the model, task, and accuracy.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bAI-native\b

        Business bullshit. Name the model, dataset, and workflow.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bshift[ -]left\b

        Business bullshit. Use test earlier, or name the specific move.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \b10x\b

        Business bullshit. Name the dimension and baseline.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bunmissable\b

        AI slop hype. Use important, or name why it matters.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \beffortless\b

        AI slop. Name what is hard about the alternative.

        Category
        Parasite Terms

        Share feedback

        You voted thumbs down

        \bcatalyze\b

        AI slop. Use drive, spark, start, or trigger.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bcatalyzes\b

        AI slop. Use drives, sparks, starts, or triggers.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bamplify\b

        AI slop. Use increase, boost, or strengthen.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bamplifies\b

        AI slop. Use increases, boosts, or strengthens.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bbolster\b

        AI slop. Use strengthen, support, or reinforce.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bbolsters\b

        AI slop. Use strengthens, supports, or reinforces.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bspearhead\b

        Business bullshit. Use lead, drive, or head.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bspearheads\b

        Business bullshit. Use leads, drives, or heads.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bunlock\b

        AI slop. Use get, start, or open.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bsmoke\b

        Business bullshit test branding. Use sanity check or basic check.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        \bload-bearing\b

        Business bullshit metaphor. Use critical, essential, or core.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        in today.s (fast-paced|modern|digital|ever-evolving)

        AI slop opener. Start with the actual point.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        it is (worth noting|important to note|important to remember) that

        AI slop hedge. Just say the thing.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        it's (worth noting|important to note|important to remember) that

        AI slop hedge. Just say the thing.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        in the realm of

        AI slop. Use in, or name the area directly.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        when it comes to

        AI slop. Name the thing directly.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        at the end of the day

        AI slop hedge. Make the concluding statement directly.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        at its core

        AI slop. Use simply, basically, or just define it.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        plays a (crucial|vital|significant|key) role

        AI slop. Name the specific contribution.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        crucial role in shaping

        AI slop. Name what it actually shapes and how.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        navigate the complexit

        AI slop. Use deal with, handle, or work through.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        harness the power of

        AI slop. Use use, or name the specific capability.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        embark on a journey

        AI slop. Use start, begin, or launch.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        unlock (your|its) potential

        AI slop. Name what becomes available.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        bridge the gap

        Business bullshit. Name the two things and the connection.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        move the needle

        Business bullshit. Name the metric and the change.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        low-hanging fruit

        Business bullshit. Name the easy wins specifically.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        think outside the box

        Business bullshit. Describe the actual approach.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        win-win

        Business bullshit. Name both benefits explicitly.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        best practices

        Business bullshit. Use what works, or name the practice.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        value proposition

        Business bullshit. Use offer, or name the value.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        pain points

        Business bullshit. Use problems, frustrations, or what is broken.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        north star

        Business bullshit. Use goal, target, or primary objective.

        Category
        Corporate Waffle

        Share feedback

        You voted thumbs down

        double-edged sword

        AI slop. State the actual trade-off.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        in conclusion

        AI slop. Cut it, or reframe the final point.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        to summarize

        AI slop. Cut it; the reader already read it.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        to wrap things up

        AI slop. Cut it; the reader already read it.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        in summary

        AI slop. Cut it; the reader already read it.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        I hope this helps

        AI slop sign-off. Cut it entirely.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        feel free to reach out

        AI slop sign-off. Cut it entirely.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        do not hesitate to contact

        AI slop sign-off. Cut it entirely.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        happy (to help|coding|hacking)

        AI slop sign-off. Cut it entirely.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        best of luck

        AI slop sign-off. Cut it entirely.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        great question

        AI slop sycophantic opener. Just answer.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        that's a (fantastic|great|wonderful) point

        AI slop sycophantic opener. Respond directly.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        as an AI language model

        Chatbot residue. Cut it entirely.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        certainly[!,]

        AI slop sycophantic opener. Cut it.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        of course[!,]

        AI slop sycophantic opener. Cut it.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        absolutely[!,]

        AI slop sycophantic opener. Cut it.

        Category
        AI Slop

        Share feedback

        You voted thumbs down

        \bsilent

        No silent anything. Log errors or fail explicitly.

        Category
        Quiet Errors

        Share feedback

        You voted thumbs down

        \bfallback\b

        No fallback code. Fix properly or fail explicitly.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bfalling\b

        Avoid 'falling back' patterns.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bbackwards\b

        No backwards compatibility hacks.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bcompatibility\b

        No compatibility shims.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bdegradation\b

        No graceful degradation. Fail fast.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \blegacy\b

        No legacy code paths.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bshims?\b

        No shim layers.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bstubs?\b

        No stub implementations.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bskeleton\b

        No skeleton code.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bplaceholders?\b

        No placeholder code.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bmock\b

        No mock objects in production code.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \blazy\b

        No lazy evaluation hacks.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \bmaybe\b

        No uncertain code paths.

        Category
        Obsolete Paths

        Share feedback

        You voted thumbs down

        \.suppress

        No suppression of errors/warnings.

        Category
        Suppression

        Share feedback

        You voted thumbs down

        \bgetattr\(

        getattr is unsafe. Use explicit attribute access.

        Category
        Unsafe Reflection

        Share feedback

        You voted thumbs down

        \bsetattr\(

        setattr is unsafe. Use explicit attribute assignment.

        Category
        Unsafe Reflection

        Share feedback

        You voted thumbs down

        \bhasattr\(

        hasattr is unsafe. Use explicit checks or protocols.

        Category
        Unsafe Reflection

        Share feedback

        You voted thumbs down

        \.__dict__

        Direct dict access forbidden. Use proper interfaces.

        Category
        Unsafe Reflection

        Share feedback

        You voted thumbs down

        \bvars\(

        vars() is unsafe reflection.

        Category
        Unsafe Reflection

        Share feedback

        You voted thumbs down

        \bimportlib\b

        Dynamic imports forbidden. Use explicit imports.

        Category
        Unsafe Reflection

        Share feedback

        You voted thumbs down

        @dataclass

        Use Pydantic models instead of dataclasses.

        Category
        Data Classes

        Share feedback

        You voted thumbs down

        \bxfail\b

        No xfail tests. Fix the code, remove the test, or write a proper assertion.

        Category
        Test Quality

        Share feedback

        You voted thumbs down

        /home/

        No hardcoded home paths. Use environment variables.

        Category
        Path Safety

        Share feedback

        You voted thumbs down

        \.parent\.parent

        Fragile path navigation. Use explicit paths.

        Category
        Path Safety

        Share feedback

        You voted thumbs down

        \.parents\[

        Fragile path navigation. Use explicit paths.

        Category
        Path Safety

        Share feedback

        You voted thumbs down

        \.parent\.resolve

        Fragile path navigation. Use explicit paths.

        Category
        Path Safety

        Share feedback

        You voted thumbs down

        uuid\.uuid[134568]\(

        Only uuid7 allowed. Use uuid_utils.uuid7().

        Category
        UUID

        Share feedback

        You voted thumbs down

        \buuid[134568]\(\)

        Only uuid7 allowed. Use uuid_utils.uuid7().

        Category
        UUID

        Share feedback

        You voted thumbs down

        :latest\b

        Pin container versions. No :latest tags.

        Category
        Container Versions

        Share feedback

        You voted thumbs down

        \bpython3?\b

        Use uv run python for hermetic execution. No bare python/python3 calls.

        Category
        Deprecated Python

        Share feedback

        You voted thumbs down

        \.venv/bin/python

        Use uv run python (own repo) or uv run --project --no-sync python (cross-repo). Never .venv/bin/python.

        Category
        Deprecated Python

        Share feedback

        You voted thumbs down

        pattern:\s*'\.\*'

        Catch-all regex pattern '.*' in a pattern field. Use per-pattern scoped exceptions only.

        Category
        Policy Integrity

        Share feedback

        You voted thumbs down

        pattern:\s*"\.\*"

        Same as single-quoted .* form. No catch-all pattern keys.

        Category
        Policy Integrity

        Share feedback

        You voted thumbs down

        pattern:\s*'\.\+'

        Catch-all regex pattern '.+' evades the .* ban. Use per-pattern scoped exceptions only.

        Category
        Policy Integrity

        Share feedback

        You voted thumbs down

        pattern:\s*"\.\+"

        Same as single-quoted .+ form. No catch-all pattern keys.

        Category
        Policy Integrity

        Share feedback

        You voted thumbs down

        self\.get\(

        Avoid dict-like self.get(). Use explicit attributes.

        Category
        Self Methods

        Share feedback

        You voted thumbs down

        self\.set\(

        Avoid dict-like self.set(). Use explicit attributes.

        Category
        Self Methods

        Share feedback

        You voted thumbs down

        --

        ASCII em-dash punctuation forbidden. Use commas, colons, or parentheses.

        Category
        Special Characters

        Share feedback

        You voted thumbs down

        \u2014

        Unicode em-dash (U+2014) forbidden. Use commas, colons, or parentheses.

        Category
        Special Characters

        Share feedback

        You voted thumbs down

        \u2013

        Unicode en-dash (U+2013) forbidden. Use ASCII hyphen (-) for ranges.

        Category
        Special Characters

        Share feedback

        You voted thumbs down

        reason=.*not implemented yet

        Implement the test or delete it.

        Category
        Directory Rules
        Scope
        Directory: tests

        Share feedback

        You voted thumbs down

        _v[0-9]+

        No versioned filenames. Use git.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _old\.

        No _old files. Delete or rename properly.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _new\.

        No _new files. Rename to final name.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _fixed\.

        No _fixed files. Replace original.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _temp\.

        No temp files in repo.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _tmp\.

        No tmp files in repo.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _backup\.

        No backup files. Use git.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _copy\.

        No copy files. Consolidate.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        _final\.

        No _final files. Just use the real name.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        \.(old|new|backup|bak|orig)$

        No backup extensions. Use git.

        Category
        Filename Rules
        Scope
        Filename match

        Share feedback

        You voted thumbs down

        \|\|\s*true\b

        Pipe-to-true masks command failure; the exit code is discarded.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \|\|\s*:\s*$

        Pipe-to-colon (no-op) masks command failure silently.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \|\|\s*\\\s*$

        Line-continuation after || hides the true command on the next line.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \|\s*(?:tail|head|cat|true|:)\b[^|]*$

        Piping through tail/head/cat/true masks the upstream exit code.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        2>\s*/dev/null

        Redirects stderr to /dev/null, hiding error output from the operator.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        (?:^|\s)--(?:quiet|silent)(?:\s|$)

        Long quiet/silent flag suppresses failure context; capture output and print it on failure instead.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \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).

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*set\s+\+[eE]\b

        Disables errexit (set +e), allowing failures to propagate silently.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*trap\s+(''?|:\\|:\s*'?)\s+ERR\b

        ERR trap set to a no-op (:), swallowing trap-based error reporting.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*[^#\s&]+\s*&(?:\s*#.*)?$

        Background process launched without wait; failure is never observed.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        2>\s*/dev/stderr\s*$

        Redirects stderr to /dev/stderr in a context that suppresses real output.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*(?:\.|source)\s+\S(?!.*\|\|\s*(?:exit|return))

        Sources a file without guarding against failure; sourced errors vanish.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \|\|\s*(?:echo|printf)\b

        Echo on failure replaces proper error handling; the exit code is lost.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        if\s+.+\s*;\s*then\s*:\s*;?\s*fi

        Empty if body (colon no-op) discards command-substitution failure under set -e.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\t@?true\s*(?:#.*)?$

        Make recipe that succeeds without doing work; masks missing/wrong targets.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        >\s*/dev/null

        Redirects stdout to /dev/null, hiding command output from the operator.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        &>\s*/dev/null

        Redirects stdout and stderr to /dev/null in one shot.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        curl\b[^\n;]*\s-s\b[^\n;]*-o\s*/dev/null

        curl -s discards errors and writes the body to /dev/null.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^(?!\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.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\t@

        Make @ prefix hides the recipe command from the operator.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        curl\b[^\n]*\s-s(?!S)

        curl -s without -S hides errors on stderr; use -sS or capture stderr explicitly.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        npm\b[^\n]*(?:--silent\b|--loglevel\s+(?:silent|error)\b)

        npm --silent or quiet loglevel hides install failure context.

        Shell.sh .bash .zshinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \}\s*catch\s*\([^)]*\)\s*\{\s*\}

        Empty catch block swallows the error with no logging or re-throw.

        JS/TS.js .jsx .ts .tsx .mjs .cjsinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \}\s*catch\s*\{\s*(?:/\*[^*]*\*/\s*)?\}

        Parameterless empty catch block silently discards all exceptions.

        JS/TS.js .jsx .ts .tsx .mjs .cjsinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \}\s*catch\s*\([^)]*\)\s*\{\s*/\*[^*]*\*/\s*\}

        Catch block contains only a comment; no error handling logic.

        JS/TS.js .jsx .ts .tsx .mjs .cjsinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \.catch\(\s*\(\s*[A-Za-z_$]?[\w$]*\s*\)\s*=>\s*\{?\s*\}?\s*\)

        Arrow-function .catch() with empty body swallows promise rejections.

        JS/TS.js .jsx .ts .tsx .mjs .cjsinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \.catch\(\s*function\s*\([^)]*\)\s*\{\s*\}\s*\)

        Function .catch() with empty body swallows promise rejections.

        JS/TS.js .jsx .ts .tsx .mjs .cjsinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \.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.

        JS/TS.js .jsx .ts .tsx .mjs .cjsinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*except\b[^:]*:\s*pass\s*(#.*)?$

        Inline except: pass swallows the exception with no handling.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*except\b[^:]*:\s*continue\s*(#.*)?$

        Inline except: continue skips the iteration on error, hiding failures.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*except\b[^:]*:\s*return(\s+None)?\s*(#.*)?$

        Inline except: return None hides the exception from the caller.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*except\b[^:]*:\s*\.\.\.\s*(#.*)?$

        Inline except: ... (Ellipsis) is a no-op that swallows the error.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \bcontextlib\.suppress\(

        contextlib.suppress() explicitly silences exceptions by type.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*from\s+contextlib\s+import\s+[^#\n]*\bsuppress\b

        Importing suppress from contextlib signals intent to silence errors.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \bsubprocess\.(?:run|call)\s*\([^)]*\bcheck\s*=\s*False

        subprocess with check=False ignores non-zero exit codes.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*check\s*=\s*False\s*,?\s*(?:#.*)?$

        Multiline subprocess call with check=False on its own line.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        if\s+not\s+\w+\s+and\s+(?:component\.)?detect_path\b

        Conditional path detection that hides the reason a path was missing.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \.strip\(\)\s*or\s*\"[^\"]*\"(?!\s*raise)

        strip() or literal hides parse failures by returning a default value.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        stdin\s*=\s*subprocess\.DEVNULL

        subprocess with stdin=DEVNULL discards stdin; can hide interactive prompts and errors.

        Python.pyinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \|\|\s*true\b

        Ansible shell command pipes to true, masking task failure.

        Ansible.yml .yamlinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        \|\|\s*:\s*$

        Ansible shell command pipes to colon (no-op), masking task failure.

        Ansible.yml .yamlinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*ignore_errors:\s*yes\b

        ignore_errors: yes lets a failed task pass without interruption.

        Ansible.yml .yamlinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        2>\s*/dev/null(?!\s*\|\|\s*(?:echo|printf)\b)

        Ansible shell redirects stderr to /dev/null without a log redirect.

        Ansible.yml .yamlinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        ^\s*failed_when:\s*false\s*(?:#.*)?$

        failed_when: false makes a task never fail; non-zero exit codes silently become ok.

        Ansible.yml .yamlinline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        StandardOutput\s*=\s*journal

        Service logs stdout only to journald; terminal operators see nothing.

        systemd.service .service.j2 .timer .timer.j2inline
        Category
        Error Swallowing

        Share feedback

        You voted thumbs down

        cron-no-log-redirect

        Cron job without a log redirect; output and errors are lost to the void.

        Cron.cron .crontabcustom
        Category
        Error Swallowing

        _check_cron_inline()

        lib/check_silent_swallow.py
        def _check_cron_inline(
            a: AddedLine,
            text: str,
        ) -> tuple[str, int, str, str] | None:
            stripped = text.rstrip()
            if not stripped:
                return None
            if CRON_SHEBANG_OR_COMMENT.match(stripped):
                return None
            if CRON_ENV.match(stripped):
                return None
            if not CRON_LINE.match(stripped):
                return None
            if not CRON_OK.search(stripped):
                return (a.path, a.lineno, "cron-no-log-redirect", stripped)
            return None

        Share feedback

        You voted thumbs down

        py-except-pass

        Except block that swallows errors with a bare pass statement.

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_pass()

        lib/check_silent_swallow_python.py

        Detect except block that swallows errors with a bare pass statement.

        def _check_except_pass(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block that swallows errors with a bare pass statement."""
            match = _BODY_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if match.group(2) == "pass":
                return "py-except-pass"
            return None

        Share feedback

        You voted thumbs down

        py-except-continue

        Except block that swallows errors with a bare continue statement.

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_continue()

        lib/check_silent_swallow_python.py

        Detect except block that swallows errors with a bare continue statement.

        def _check_except_continue(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block that swallows errors with a bare continue statement."""
            match = _BODY_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if match.group(2) == "continue":
                return "py-except-continue"
            return None

        Share feedback

        You voted thumbs down

        py-except-ellipsis

        Except block that swallows errors with Ellipsis (...).

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_ellipsis()

        lib/check_silent_swallow_python.py

        Detect except block that swallows errors with Ellipsis (...).

        def _check_except_ellipsis(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block that swallows errors with Ellipsis (...)."""
            match = _BODY_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if match.group(2) == "...":
                return "py-except-ellipsis"
            return None

        Share feedback

        You voted thumbs down

        py-except-return-none

        Except block returns None, hiding the exception from the caller.

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_return_none()

        lib/check_silent_swallow_python.py

        Detect except block returning None, hiding the exception from the caller.

        def _check_except_return_none(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block returning None, hiding the exception from the caller."""
            match = _BODY_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if match.group(2).startswith("return"):
                return "py-except-return-none"
            return None

        Share feedback

        You voted thumbs down

        py-except-empty-body

        Except block with an empty body; no error handling at all.

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_empty_body()

        lib/check_silent_swallow_python.py

        Detect except block with an empty body; no error handling at all.

        def _check_except_empty_body(
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block with an empty body; no error handling at all."""
            if _resolve_body_line(lines, lineno, header_indent) is None:
                return "py-except-empty-body"
            return None

        Share feedback

        You voted thumbs down

        py-except-debug-only

        Except block only logs at debug level; the error is not surfaced.

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_debug_only()

        lib/check_silent_swallow_python.py

        Detect except block that only logs at debug level; the error is not surfaced.

        def _check_except_debug_only(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block that only logs at debug level; the error is not surfaced."""
            match = _DEBUG_LOG_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if _is_follow_up_blocked(lines, lineno, body_indent):
                return None
            return "py-except-debug-only"

        Share feedback

        You voted thumbs down

        py-except-raise-no-from

        Except block raises a new exception without chaining (no from clause).

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_raise_no_from()

        lib/check_silent_swallow_python.py

        Detect except block raising a new exception without chaining (no from clause).

        def _check_except_raise_no_from(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block raising a new exception without chaining (no from clause)."""
            match = _RAISE_NEW_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if _is_follow_up_blocked(lines, lineno, body_indent):
                return None
            return "py-except-raise-no-from"

        Share feedback

        You voted thumbs down

        py-except-silent-exit

        Except block calls sys.exit(0), terminating with success on error.

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_silent_exit()

        lib/check_silent_swallow_python.py

        Detect except block calling sys.exit(0), terminating with success on error.

        def _check_except_silent_exit(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block calling sys.exit(0), terminating with success on error."""
            match = _SILENT_EXIT_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if _is_follow_up_blocked(lines, lineno, body_indent):
                return None
            return "py-except-silent-exit"

        Share feedback

        You voted thumbs down

        py-except-print

        Except block only prints the error; no logging, re-raise, or recovery.

        Python.pymultiline
        Category
        Error Swallowing

        _check_except_print()

        lib/check_silent_swallow_python.py

        Detect except block that only prints the error; no logging, re-raise, or recovery.

        def _check_except_print(
            nxt: AddedLine,
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Detect except block that only prints the error; no logging,
            re-raise, or recovery."""
            match = _PRINT_RE.match(nxt.text)
            if not match:
                return None
            body_indent = len(match.group("indent"))
            if body_indent <= header_indent:
                return None
            if _is_follow_up_blocked(lines, lineno, body_indent):
                return None
            return "py-except-print"

        Share feedback

        You voted thumbs down

        js-catch-silent-return-multi

        Multi-line catch block that returns a nullish value, hiding the error.

        JS/TS.js .jsx .ts .tsx .mjs .cjsmultiline
        Category
        Error Swallowing

        _check_catch_body()

        lib/check_silent_swallow_js.py

        Check lines after a catch header for a silent return. Returns "js-catch-silent-return-multi" if a silent-return violation is found, None otherwise.

        def _check_catch_body(
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            """Check lines after a catch header for a silent return.
        
            Returns "js-catch-silent-return-multi" if a silent-return violation
            is found, None otherwise.
            """
            for offset in range(1, 4):
                body = lines.get(lineno + offset)
                if body is None:
                    continue
                if body.text.strip() == "}":
                    return None
                if JS_CONSOLE_LOG.search(body.text) or JS_THROW.search(body.text):
                    return None
                rm = JS_SILENT_RETURN.match(body.text)
                if rm:
                    body_indent = len(rm.group("indent"))
                    if body_indent <= header_indent:
                        continue
                    return "js-catch-silent-return-multi"
                if body.text.strip() and not body.text.strip().startswith("//"):
                    return None
            return None

        Share feedback

        You voted thumbs down

        ansible-shell-no-register

        Ansible shell/command task with changed_when:false but no register or failed_when.

        Ansible.yml .yamlmultiline
        Category
        Error Swallowing

        _check_ansible_shell_no_register()

        lib/check_silent_swallow_ansible.py

        Detect shell/command task with changed_when:false but no register or failed_when.

        def _check_ansible_shell_no_register(
            lines: list,
            i: int,
        ) -> str | None:
            """Detect shell/command task with changed_when:false but no register
            or failed_when."""
            has_register, has_failed_when = _scan_task_flags(lines, i)
            if has_register or has_failed_when:
                return None
            if not _check_changed_when_false(lines, i):
                return None
            return "ansible-shell-no-register"

        Share feedback

        You voted thumbs down

        ansible-shell-no-guard

        Ansible shell/command task without register or failed_when guard.

        Ansible.yml .yamlmultiline
        Category
        Error Swallowing

        _check_ansible_shell_no_guard()

        lib/check_silent_swallow_ansible.py

        Detect shell/command task without register, failed_when, or changed_when guard.

        def _check_ansible_shell_no_guard(
            lines: list,
            i: int,
        ) -> str | None:
            """Detect shell/command task without register, failed_when, or
            changed_when guard."""
            has_register, has_failed_when = _scan_task_flags(lines, i)
            if has_register or has_failed_when:
                return None
            if _check_changed_when_false(lines, i):
                return None
            return "ansible-shell-no-guard"

        Share feedback

        You voted thumbs down

        ansible-register-output-swallowed

        Ansible task registers output but only displays it on failure, or never displays it at all; the output is silently discarded.

        Ansible.yml .yamlmultiline
        Category
        Error Swallowing

        _check_ansible_register_output_swallowed()

        lib/check_silent_swallow_ansible.py

        Detect task that registers output but only displays it on failure (or never displays it at all). The output is silently discarded on success. When failed_when:false is also present, the task never fails, so conditional display-on-failure never triggers and the output is completely invisible.

        def _check_ansible_register_output_swallowed(
            lines: list,
            i: int,
        ) -> str | None:
            """Detect task that registers output but only displays it on failure
            (or never displays it at all).
        
            The output is silently discarded on success. When failed_when:false is
            also present, the task never fails, so conditional display-on-failure
            never triggers and the output is completely invisible.
            """
            reg_var, _ = _find_registered_var(lines, i)
            if not reg_var or reg_var in _REG_VAR_BLOCKLIST:
                return None
            if not _has_unconditional_display(lines, i, reg_var):
                return "ansible-register-output-swallowed"
            return None

        Share feedback

        You voted thumbs down

        sh-if-then-colon-noop

        Multi-line if/then with colon no-op body; set -e evasion around command substitution.

        Shell.sh .bash .zshmultiline
        Category
        Error Swallowing

        _check_if_then_colon_noop()

        lib/check_silent_swallow_shell.py
        def _check_if_then_colon_noop(lines: list[AddedLine], i: int) -> str | None:
            text = lines[i].text
            if not _IF_THEN_EOL_RE.match(text):
                return None
            for j in range(i + 1, min(i + 6, len(lines))):
                nt = lines[j].text
                if _FI_RE.match(nt):
                    return None
                if not nt.strip():
                    continue
                if _COLON_ONLY_RE.match(nt):
                    for k in range(j + 1, min(j + 4, len(lines))):
                        n2 = lines[k].text
                        if not n2.strip():
                            continue
                        if _ELSE_RE.match(n2):
                            return None
                        if _FI_RE.match(n2):
                            return "sh-if-then-colon-noop"
                        return None
                    return "sh-if-then-colon-noop"
                return None
            return None

        Share feedback

        You voted thumbs down

        sh-stderr-temp-discard

        Stderr redirected to a temp path variable without rc capture on the same or next lines.

        Shell.sh .bash .zshmultiline
        Category
        Error Swallowing

        _check_stderr_temp_without_rc()

        lib/check_silent_swallow_shell.py
        def _check_stderr_temp_without_rc(lines: list[AddedLine], i: int) -> str | None:
            text = lines[i].text
            if not _STDERR_TEMP_RE.search(text):
                return None
            if _RC_CAPTURE_RE.search(text):
                return None
            if _RC_ASSIGN_INLINE_RE.search(text):
                return None
            if _IF_NEGATED_RE.search(text):
                return None
            for j in range(i + 1, min(i + 4, len(lines))):
                if _RC_ASSIGN_RE.match(lines[j].text):
                    return None
            return "sh-stderr-temp-discard"

        Share feedback

        You voted thumbs down

        sh-pipe-tee-no-pipestatus

        Pipe to tee without checking PIPESTATUS[0]; upstream command failure can be masked.

        Shell.sh .bash .zshmultiline
        Category
        Error Swallowing

        _check_pipe_tee_without_pipestatus()

        lib/check_silent_swallow_shell.py
        def _check_pipe_tee_without_pipestatus(
            lines: list[AddedLine],
            i: int,
        ) -> str | None:
            text = lines[i].text
            if re.match(r"^\s*#", text):
                return None
            if not _PIPE_TEE_RE.search(text):
                return None
            if _PIPESTATUS_RE.search(text):
                return None
            for j in range(i, min(i + 7, len(lines))):
                if _PIPESTATUS_RE.search(lines[j].text):
                    return None
            return "sh-pipe-tee-no-pipestatus"

        Share feedback

        You voted thumbs down

        sh-build-log-not-surfaced

        Failure message references BUILD_LOG but does not tail/cat the log for the operator.

        Shell.sh .bash .zshmultiline
        Category
        Error Swallowing

        _check_build_log_not_surfaced()

        lib/check_silent_swallow_shell.py
        def _check_build_log_not_surfaced(
            lines: list[AddedLine],
            i: int,
        ) -> str | None:
            text = lines[i].text
            if not _BUILD_LOG_REF_RE.search(text):
                return None
            if _BUILD_LOG_SURF_RE.search(text):
                return None
            for j in range(i + 1, min(i + 9, len(lines))):
                if _BUILD_LOG_SURF_RE.search(lines[j].text):
                    return None
            return "sh-build-log-not-surfaced"

        Share feedback

        You voted thumbs down

        sh-bootstrap-gap-no-log

        Bootstrap script runs tar/install/curl/uv sync after _log with no progress log before the blocking step.

        Shell.sh .bash .zshmultiline
        Category
        Error Swallowing

        _check_bootstrap_gap_no_log()

        lib/check_silent_swallow_bootstrap.py
        def _check_bootstrap_gap_no_log(
            lines: dict[int, AddedLine],
            lineno: int,
        ) -> str | None:
            header = lines.get(lineno)
            if header is None or not _COMPLETION_LOG_RE.search(header.text):
                return None
            for offset in range(1, 8):
                body = lines.get(lineno + offset)
                if body is None:
                    continue
                text = body.text.strip()
                if not text or text.startswith("#"):
                    continue
                if _LOG_RE.search(body.text):
                    return None
                if _BLOCKING_RE.search(body.text):
                    return "sh-bootstrap-gap-no-log"
                return None
            return None

        Share feedback

        You voted thumbs down

        js-warn-return-softfail

        console.warn followed by return exits 0 without surfacing a hard failure.

        JS/TS.js .jsx .ts .tsx .mjs .cjsmultiline
        Category
        Error Swallowing

        _check_warn_and_return()

        lib/check_silent_swallow_js.py
        def _check_warn_and_return(
            lines: dict[int, AddedLine],
            lineno: int,
        ) -> str | None:
            header = lines.get(lineno)
            if header is None or not _WARN_RE.search(header.text):
                return None
            for offset in range(1, 5):
                body = lines.get(lineno + offset)
                if body is None:
                    continue
                if _THROW_RE.search(body.text) or _PROCESS_EXIT_RE.search(body.text):
                    return None
                if _RETURN_RE.match(body.text):
                    if "skipping" in header.text.lower():
                        return "js-warn-skip-return"
                    return "js-warn-return-softfail"
                if body.text.strip() and not body.text.strip().startswith("//"):
                    return None
            return None

        Share feedback

        You voted thumbs down

        js-warn-skip-return

        console.warn with "skipping" then return hides a missing dependency.

        JS/TS.js .jsx .ts .tsx .mjs .cjsmultiline
        Category
        Error Swallowing

        _check_warn_and_return()

        lib/check_silent_swallow_js.py
        def _check_warn_and_return(
            lines: dict[int, AddedLine],
            lineno: int,
        ) -> str | None:
            header = lines.get(lineno)
            if header is None or not _WARN_RE.search(header.text):
                return None
            for offset in range(1, 5):
                body = lines.get(lineno + offset)
                if body is None:
                    continue
                if _THROW_RE.search(body.text) or _PROCESS_EXIT_RE.search(body.text):
                    return None
                if _RETURN_RE.match(body.text):
                    if "skipping" in header.text.lower():
                        return "js-warn-skip-return"
                    return "js-warn-return-softfail"
                if body.text.strip() and not body.text.strip().startswith("//"):
                    return None
            return None

        Share feedback

        You voted thumbs down

        js-warn-batch-no-exit

        Batch failure summary warns but exits 0; prod prebuild should hard-fail.

        JS/TS.js .jsx .ts .tsx .mjs .cjsmultiline
        Category
        Error Swallowing

        _check_warn_batch_no_exit()

        lib/check_silent_swallow_js.py
        def _check_warn_batch_no_exit(
            lines: dict[int, AddedLine],
            lineno: int,
        ) -> str | None:
            header = lines.get(lineno)
            if header is None or not _FAILURE_BATCH_RE.search(header.text):
                return None
            for offset in range(0, 6):
                body = lines.get(lineno + offset)
                if body is None:
                    continue
                if _PROCESS_EXIT_RE.search(body.text):
                    return None
                if _WARN_RE.search(body.text):
                    return "js-warn-batch-no-exit"
            return None

        Share feedback

        You voted thumbs down

        js-catch-return-soft

        Catch block warns then returns a soft value without throw or process.exit.

        JS/TS.js .jsx .ts .tsx .mjs .cjsmultiline
        Category
        Error Swallowing

        _check_catch_warn_return_soft()

        lib/check_silent_swallow_js.py
        def _check_catch_warn_return_soft(
            lines: dict[int, AddedLine],
            lineno: int,
            header_indent: int,
        ) -> str | None:
            saw_warn = False
            for offset in range(1, 6):
                body = lines.get(lineno + offset)
                if body is None:
                    continue
                if body.text.strip() == "}":
                    break
                if _THROW_RE.search(body.text) or _PROCESS_EXIT_RE.search(body.text):
                    return None
                if _WARN_RE.search(body.text):
                    saw_warn = True
                    continue
                if saw_warn and _SOFT_RETURN_RE.match(body.text):
                    return "js-catch-return-soft"
                if body.text.strip() and not body.text.strip().startswith("//"):
                    return None
            return None

        Share feedback

        You voted thumbs down

        js-warn-keep-existing

        console.warn keeps existing asset on failure path without prod hard-fail guard.

        JS/TS.js .jsx .ts .tsx .mjs .cjsmultiline
        Category
        Error Swallowing

        _check_warn_keep_existing()

        lib/check_silent_swallow_js.py
        def _check_warn_keep_existing(
            lines: dict[int, AddedLine],
            lineno: int,
        ) -> str | None:
            header = lines.get(lineno)
            if header is None or not _WARN_RE.search(header.text):
                return None
            if not _KEEP_EXISTING_RE.search(header.text):
                return None
            for offset in range(-5, 6):
                body = lines.get(lineno + offset)
                if body is None:
                    continue
                if _PROD_GUARD_RE.search(body.text) or _PROCESS_EXIT_RE.search(body.text):
                    return None
            return "js-warn-keep-existing"

        Share feedback

        You voted thumbs down

        py-capture-output-unsurfaced

        subprocess capture_output=True without printing stderr or re-raising within the block.

        Python.pymultiline
        Category
        Error Swallowing

        _capture_output_unsurfaced()

        lib/check_silent_swallow_python.py
        def _capture_output_unsurfaced(
            lines: dict[int, AddedLine],
            anchor: int,
            block: list[AddedLine],
        ) -> str | None:
            if not any(_CAPTURE_OUTPUT_RE.search(line.text) for line in block):
                return None
            if _surfaces_after_call(lines, anchor):
                return None
            return "py-capture-output-unsurfaced"

        Share feedback

        You voted thumbs down

        py-subprocess-pipe-no-progress

        subprocess stdout=PIPE (or PIPE alias) on a long wrapper with no stderr progress banner before the call.

        Python.pymultiline
        Category
        Error Swallowing

        _subprocess_pipe_no_progress()

        lib/check_silent_swallow_python.py
        def _subprocess_pipe_no_progress(
            lines: dict[int, AddedLine],
            anchor: int,
            block: list[AddedLine],
        ) -> str | None:
            if not any(_STDOUT_PIPE_RE.search(line.text) for line in block):
                return None
            if _has_progress_before(lines, anchor):
                return None
            return "py-subprocess-pipe-no-progress"

        Share feedback

        You voted thumbs down

        container-run-chained-no-trace

        Containerfile RUN chains multiple commands without echo or set -x trace markers.

        containermultiline
        Category
        Error Swallowing

        _check_run_chained_no_trace()

        lib/check_silent_swallow_container.py
        def _check_run_chained_no_trace(text: str) -> str | None:
            if not _RUN_RE.match(text):
                return None
            if text.count("&&") < 2:
                return None
            if _TRACE_RE.search(text):
                return None
            return "container-run-chained-no-trace"

        Share feedback

        You voted thumbs down

        container-run-step-missing-echo

        Traced RUN chain lacks echo before tar/npm/uv/bash scripts step.

        containermultiline
        Category
        Error Swallowing

        _check_run_step_missing_echo()

        lib/check_silent_swallow_container.py
        def _check_run_step_missing_echo(text: str) -> str | None:
            if not _RUN_RE.match(text):
                return None
            if not _SET_TRACE_RE.search(text):
                return None
            if "&&" not in text:
                return None
            segments = re.split(r"\s*&&\s*", text)
            for idx, segment in enumerate(segments):
                seg = segment.strip()
                if not _STEP_CMD_RE.match(seg):
                    continue
                has_echo = bool(_ECHO_STEP_RE.search(seg))
                if idx > 0 and _ECHO_STEP_RE.search(segments[idx - 1]):
                    has_echo = True
                if not has_echo:
                    return "container-run-step-missing-echo"
            return None

        Share feedback

        You voted thumbs down

        The Digital and AI Workspace Guardrails Platform2026 ◆ Independent AI Labs