npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@magpie-community/middleware-block-patterns

v0.1.1

Published

Rejects requests carrying text you list — plain substring and regular-expression matching, in every API magpie serves

Downloads

216

Readme

@magpie-community/middleware-block-patterns

Rejects requests that contain text you list, as magpie gateway middleware. A request with one of your words or patterns in it is turned away with a 400 before it reaches a model; everything else is sent on untouched.

Install it from magpie's Plugins › Discover, or with magpie plugin add @magpie-community/middleware-block-patterns. Set its options under Plugins › Installed › Options, or with magpie plugin options block-patterns '<json>'.

Options

{ "words": ["project-codename"],
  "patterns": ["\\b\\d{3}-\\d{4}\\b"],
  "system": true,
  "message": "" }
  • words. Plain substrings, matched anywhere in the text, ignoring case.
  • patterns. Regular expressions, also matched ignoring case.
  • system. true (the default) reads the system prompt as well as the user's turns, so a word in either turns the request away. false leaves every system prompt out and reads the user's turns alone. Where each API keeps its system prompt is listed under "What it reads".
  • message. The error text to use in place of the default one.

What it reads

Every content shape an agent sends, in all four APIs magpie serves: plain string content, text and input_text blocks, Responses input items, and Gemini parts. Anthropic, Chat Completions, Responses and Gemini are all covered.

Every user turn is read, not only the last one, so a word earlier in the conversation is caught. System prompts are read too, unless you set system to false. Each API keeps its system prompt in its own place, and all of them are read:

| API | Read when system is true | |---|---| | Anthropic | the top-level system field, as a string or as text blocks, and any system / developer message | | Chat Completions | any system / developer message | | Responses | instructions, and any system / developer input item | | Gemini | systemInstruction and system_instruction, as a string or as a { parts } object |

Tool calls, tool arguments, tool results and Gemini thought parts are never read, so a file an agent reads that contains a word doesn't stop it, and a word the model said back doesn't either.

If a pattern does not compile

A patterns entry that is not a valid regular expression is ignored, and the rest of your options still work. Nothing is thrown: a typo in one entry cannot turn away every request the gateway sees. Fix the pattern in Plugins › Installed › Options — the entries that failed are not reported, so check the spelling if a word you listed seems to be passing through.

What it is not

This is literal matching, not a safety classifier. It does not understand what a request means, and it does not judge whether anything is harmful. A synonym, a paraphrase, a misspelling or a word split by formatting passes it. Don't rely on it as a real guardrail against a determined prompt: use it to keep listed text — an internal codename, a customer's name, an unreleased feature — out of what your gateway sends.

Word Guard vs this

Both match a list of words and regular expressions, and both can turn a request away, so it is worth saying which to install.

  • Word Guard can mask a match and send the request on, and can mask matches in the replies as well. It reads only the last user message by default, and never reads a system prompt.
  • This one only turns requests away — there is no mask and it never reads replies. In exchange it reads every user turn and every system prompt, wherever the API keeps it.

Install this one when you want a listed word to be an error rather than something silently rewritten, and when a system prompt is part of what you want to keep off the wire. Install Word Guard when you would rather the request go through with the word blanked out. They can be installed together.

magpie already redacts secrets (API keys and tokens) before a request leaves your computer, and puts them back in the reply. Neither package is needed for that.

中文:按你列出的词与正则拒绝请求(纯字面匹配,不是安全分类器),可选择是否读取 system 提示词。