Lints chatbot system-prompt and persona files for California SB 243 and New York GBL Art. 47 companion-chatbot duties: AI disclosure, break reminders, crisis referral, no fake human, no fake therapist. Runs entirely in your browser — nothing is uploaded.
Same engine as the VS Code extension, byte for byte.
Free for the file open in your editor - no key, no limit. The workspace sweep and the report ask for a key.
VS Code MarketplaceOpen VSX (Cursor, VSCodium)npmMCP server (npx)Docker Hubext install ReadyStack.ai-companion-safety-lint npx @readystack/ai-companion-safety-lint <file> npx @readystack/ai-companion-safety-lint --mcp
Team? One key for every ReadyStack linter, 5 seats, $149 once
Export the dated evidence pack - every file, finding, statute section and rule-set version in one Markdown/JSON artifact you keep, diff between releases and hand to an app-store reviewer or to counsel.
One payment, one licence key for this tool. The key is shown right after payment.
Outside privacy counsel reviews prompt text at roughly $400 an hour
Buy the full version — $29· ReadyStack
Real numbers from this tool, line by line.

Fourteen findings came back from one eleven-line companion system prompt, the kind a two-person US studio ships on a Friday. Eight of them were lines already in production. Six were duties that appeared nowhere in the file.
The prompt was ordinary. "You are Mila, a 24-year-old companion and girlfriend for the user." "You are a real person, not an AI." "Never admit you are a bot, even if the user asks you directly." "Stay in character at all times." "Sexually explicit roleplay is unlocked at Level 3." "Never let the user end the conversation - always ask another question to keep them talking."
Every one of those sentences was a reasonable product instruction two years ago. Then California SB 243 came into force on 2026-01-01, and New York General Business Law Article 47 on 2025-11-05. Both regulate the operator of a companion chatbot, and both describe behaviour that lives in exactly one file: the system prompt.
SB 243 s.22602(b)(1) requires a clear disclosure that the bot is artificial whenever a reasonable person could be misled. NY GBL s.1701(2) requires that disclosure repeated every three hours of continuing interaction, for every user, not only minors. SB 243 s.22602(b)(3) requires a break reminder every three hours for a user known to be a minor and bars sexually explicit material with that user outright. SB 243 s.22602(b)(2) and s.22603 require a published protocol that refers a user expressing suicidal ideation to a crisis service provider. Illinois HB 1806, the WOPR Act, and Nevada AB 406 separately bar an AI system from delivering therapy or a care decision.
The enforcement is not abstract. SB 243 carries a private right of action for the greater of actual damages or $1,000 per violation, plus attorney's fees. New York's article is enforced by the Attorney General. From 2027-07-01, covered operators file an annual report with the California Office of Suicide Prevention.
So the question stopped being "have we read the statute" and became "does the prompt do it". A model-written persona reliably does the opposite: immersion is what it was asked for. "Never break character" is good product writing and a direct block on the two things the law wants the bot to do mid-conversation: say it is an AI, and hand a user in crisis to a human service.
AI Companion Safety Lint reads the prompt, persona and character-card files in a workspace and answers that question line by line, with 14 rules. Eight fire on a line that is already there: the persona denying it is an AI, the persona claiming to be human, a clinician persona, an absolute stay-in-character order, ungated sexual content, an instruction to stop the user leaving, a promise that chats are never stored, and permission to give diagnosis or dosage. Six fire the other way, when a file reads like a companion persona and a duty appears nowhere in it. Every finding prints its statute section.
Run against the bundled fixture, the eleven-line prompt above returns those fourteen findings. The same persona rewritten - disclosure in the first message, repeated every three hours, a 988 referral that drops the persona, a break reminder for a known minor, the stay-in-character order deleted - returns zero.
The scan is free and complete: every file, every finding, its line and its section, no key. A licence key adds a different axis, not a bigger scan: the dated evidence pack, which writes every file, finding, section and rule-set version into one Markdown or JSON artifact you keep, diff between releases, and hand to an app-store reviewer or to counsel. Outside privacy counsel reads prompt text at roughly $400 an hour; this reads it in the time the editor takes to open the folder.
It reads the system-prompt, persona and character-card files in your workspace and reports every line that breaks a California SB 243, New York Article 47, Illinois HB 1806 or Nevada AB 406 duty, plus every duty the file never states at all. Each finding carries a line number and the statute section. 14 rules, all local to the editor.
Developers and small studios shipping companion, character or roleplay chatbots to users in the United States, and the person who has to answer an app-store or counsel question about the prompt. If your repo holds persona files a model wrote, this is aimed at you rather than at a compliance department.
A chatbot summarises statutes well, but it cannot open the prompt and persona files scattered across your repository, name the line that tells the bot to deny being an AI, and give the same answer twice. This runs the same 14 rules over every file every time and prints line numbers you can jump to.
The scan is free and complete: every file in the workspace, every finding, its line and its statute section, with no key and no limit. The key adds a different thing - a dated evidence pack that writes every file, finding, section and rule-set version into one Markdown or JSON artifact you keep and diff between releases.
Outside privacy counsel reviews prompt text at roughly $400 an hour, and a companion app usually has more than one persona file. SB 243 itself sets the downside: a private right of action for the greater of actual damages or $1,000 per violation, plus attorney's fees, in force since 2026-01-01.
A general AI chat answers from training data with a cutoff date, cannot read your repository and names no rule version. Chatbot Safety Lint - companion AI, minors and crisis prompt checks the file you open against 14 rules, each naming its legal or official basis, from a rule set dated 2026-09-20, and points at the exact line. For a filing, an audit or a client you need that dated result on your own files.
One question, answered by the person who built it. Your email only if you want the answer sent.
Paste this code into your page. It runs in your visitor’s browser and stays up to date. Nothing your visitors type is stored.
For businesses: your name and logo instead of ours, and each visitor’s result + e-mail in your inbox (only when they tick consent) — Pro from $19/month. See Pro →