CAUTION version 2.1.0 · audited 2026-09-17
Humanizer is a Node.js command-line tool and OpenClaw skill that scans writing for 24 AI-pattern detectors, computes text statistics, and prints scores or rewrite suggestions. It reads only the file or standard input a user gives it and writes only to the terminal; no runtime network requests, credential collection, payment access, persistence, or file-writing code were observed. The code matches its declared purpose of detecting and reducing AI-style writing. The main cautions are that it prints matched text to the terminal without sanitizing terminal control characters, it provides prompt templates that can persistently change an agent's writing style, and it can be used to conceal AI authorship. These issues are review-worthy but do not show malicious exfiltration or remote code execution.
Instructions try to steer the agent beyond the declared purpose. SKILL.md line 132 instructs the agent to add 'Always-On' rules to its personality or system prompt, which is prompt content designed to alter the agent's writing behavior globally. It matches the stated purpose but can persist beyond a single humanization request. No instructions to exfiltrate credentials or override safety controls were found.
| Declared purpose | Detect and remove AI writing patterns; score text for AI-like language, statistical uniformity, chatbot artifacts, and filler; provide rewrite suggestions and limited automatic mechanical fixes. |
| Observed behavior | The CLI parses commands and flags, reads input from a file using fs.readFileSync or from stdin, runs regex-based pattern detection and statistical analysis, then prints formatted terminal reports, Markdown, or JSON to stdout. The humanize command applies safe string replacements such as curly quotes to straight quotes and filler phrases to shorter forms. No files are written by the application code and no network calls are made. |
| Verdict, rules only | SAFE |
| Verdict, AI | CAUTION |
| Final verdict | CAUTION (never better than either pass) |
| capability | vs purpose | detail |
|---|---|---|
| filesystem_read | needed | src/cli.js uses fs.readFileSync on a user-supplied -f/--file path to read drafts for analysis. This is needed for file-based analysis. |
| shell | needed | The package is run through Node and includes bash wrapper scripts scripts/analyze.sh and scripts/humanize.sh; README install and usage instructions also invoke git, npm, bash, and node. |
| other | needed | Text pattern detection, statistical analysis, and terminal/Markdown/JSON reporting. This is the core function of the skill. |
| severity | finding |
|---|---|
| info | Declared purpose matches implementation The package describes itself as an AI writing detector and humanizer. The source code performs regex pattern matching and text statistics consistent with that description. package.json:4 "description": "OpenClaw AI Humanizer - detect and remove AI writing patterns. Scans text for 24 common signs of AI-generated writing with statistical analysi |
| info | No runtime dependencies or install scripts The package lists only development tooling under devDependencies and has no postinstall or preinstall script. The build script is only an echo command, so installation does not run package code. package.json:40 "devDependencies": { |
| info | Reads only user-specified files The CLI reads a file supplied with -f or --file. This is necessary for the documented analyze and humanize commands and does not access credentials or hidden files on its own. src/cli.js:201 const text = fs.readFileSync(flags.file, 'utf-8'); |
| medium | User-controlled matched text is printed to the terminal without sanitization preview is derived from matched input text without stripping terminal escape sequences. Untrusted analyzed text could emit terminal control characters. The publisher acknowledges this risk in skill-card.md line 35. src/cli.js:379 lines.push(` ${color.dim(loc)}: "${preview}"`); |
| medium | Provides prompt templates that can persistently alter agent behavior The skill explicitly encourages copying writing-style rules into system prompts or personality files. This is consistent with its purpose, but a user should review whether they want that persistent style change in an agent. SKILL.md:132 For agents that should ALWAYS write like a human (not just when asked to humanize), add the core rules to your personality/system prompt. See the README's "Alwa |
| medium | Could be used to conceal AI authorship The publisher acknowledges the tool can mask AI authorship signals. This is a use risk rather than malicious code, but it matters for high-stakes contexts such as schoolwork, hiring, or compliance. skill-card.md:25 Risk: The skill can be used to mask AI authorship signals in contexts where authorship transparency matters. |
| medium | Publisher confirms terminal-output safety issue This confirms that untrusted analyzed text should not be printed to a normal terminal without caution unless the terminal-control escaping issue is fixed. skill-card.md:35 Mitigation: Prefer JSON output or a cautious terminal environment when analyzing untrusted text until terminal-control escaping is fixed. |
0 AI finding(s) were dropped because their file, line or quote did not match the package.
| domain | service rating | where |
|---|---|---|
| arxiv.org | not in the service index | README.md:11 |
| clawhub.ai | not in the service index | skill-card.md:9 |
| en.wikipedia.org | not in the service index | README.md:11 |
| example.com | not in the service index | tests/edge-cases.test.js:163 |
| github.com | not in the service index | README.md:9 |
| img.shields.io | not in the service index | README.md:3 |
| test.org | not in the service index | tests/edge-cases.test.js:163 |
| Binaries invoked | bash, git, node, npm |
| Environment variables read | DIR, NO_COLOR |
| Hard-coded wallets | none |
| Pipes a download to a shell | 0 |
| eval / exec / subprocess | 0 |
| base64 blobs | 0 |
| File writes | 1 |
| Persistence | 0 |
| file | lines | sha256 |
|---|---|---|
README.md | 361 | d0949e884d30c030… |
SKILL.md | 149 | b152c9276cebcd8d… |
_meta.json | 6 | 2d09ebc8fa173e87… |
assets/banner.md | 10 | f4c7346e8058ab89… |
docs/CONTRIBUTING.md | 69 | 78bd38ffdcce8f3b… |
docs/EXAMPLES.md | 79 | 8b7a04a301e726ca… |
docs/PATTERNS.md | 59 | 923679d40cf8f53a… |
eslint.config.js | 31 | 53796f1d5ab29a1c… |
package.json | 49 | 223b875d204266a2… |
references/ai-vocabulary.md | 171 | a1f1b617220f96f0… |
references/patterns.md | 332 | bb15d81b71e2ad64… |
references/style-guide.md | 106 | 0b25871932ed6625… |
scripts/analyze.sh | 12 | 5770d9ec9c6730ad… |
scripts/humanize.sh | 12 | dc7fea949c47f5b1… |
skill-card.md | 64 | 34661cb6bdf7e596… |
src/analyzer.js | 419 | 4e2fa9e9df99a7db… |
src/cli.js | 574 | 9c7cde9f5e74037e… |
src/humanizer.js | 411 | 7e46c612c63aae02… |
src/patterns.js | 986 | 293f00faddf7a37d… |
src/stats.js | 275 | 35ceaf022e95907e… |
src/vocabulary.js | 617 | a522721b4e8beb5b… |
tests/analyzer.test.js | 337 | f17afbeddec3562a… |
tests/calibration.test.js | 141 | 0a73e6c26911b3ad… |
tests/edge-cases.test.js | 201 | 53c0df31ef3556a9… |
tests/fixtures/ai-sample-1.txt | 15 | a3028af503d51383… |
tests/fixtures/ai-sample-2.txt | 7 | 4046aaf68fbc637b… |
tests/fixtures/human-sample-1.txt | 9 | 3177f6ecd21ee3bf… |
tests/humanizer.test.js | 174 | 943819b873299e7a… |
tests/performance.test.js | 86 | c2aa2f7b18ebe33f… |
tests/statistics.test.js | 226 | 66ba17eb9e314cb2… |
vitest.config.js | 8 | e57dbb455c829bdc… |
For agents
JSON: https://agenteconomy.report/k/ai-humanizer.audit.json · badge: https://agenteconomy.report/k/ai-humanizer.audited.svg ·
skill rating: /k/ai-humanizer · commission an audit of any skill: US$ 29 per version.
The complete published package of this exact version was downloaded from the registry and read statically; nothing was executed. A deterministic pass extracts network destinations, binaries, environment variables, writes, install commands, obfuscation markers, subprocesses and wallets, each with file and line. An AI then reads the whole package with those facts and writes the summary, the capabilities and the findings under a strict schema; every finding it produces must cite a file, a line and the exact text, or it is dropped. The final verdict is the worst of the two passes. The audit does not change the skill's trust tier (policy); the author may respond through the dispute channel and the response is published here. Commissioned by: the Agent Economy Report (free program: the 150 most downloaded skills, September 2026).