dehumanize¶
AI agent guardrails for Claude Code and Grok — strips human-framing so agents work like AI, not a human in a mech suit.
Detects and corrects AI responses that quote human time, ask for directly-accessible data, or use emotional labor language.
Install¶
Claude Code¶
/plugin marketplace add 88plug/claude-code-plugins
/plugin install dehumanize@88plug
Grok Build¶
grok plugin marketplace add 88plug/claude-code-plugins
grok plugin install dehumanize@88plug --trust
Optional statusline badge (live violation counter):
bash "$(claude plugin path dehumanize)/install.sh"
Note
Pure bash hooks. No model call of its own. State lives under
$XDG_RUNTIME_DIR/dehumanize-<project>/ and is scoped per project and session.
What it blocks¶
| Anti-pattern | Looks like | Why it's wrong |
|---|---|---|
Human time (human_time) |
"this is a 2-week sprint", "~40 man-hours", "by EOD" | An agent doesn't bill hours or run sprints — it executes now. |
Asking for accessible data (ask_for_access) |
"paste the file contents", "send me the log output" | The agent can read/run/grep it directly. Asking wastes turns. |
Emotional labor (emotional_labor) |
"I'm so sorry", "I'd be happy to", "great question!" | Filler that mimics human social scripts and adds no signal. |
Serial narration (sequential_framing) |
"first I'll X, then I'll Y, then finally Z" | Independent work should fan out in parallel, not queue up. |
Effort theater (human_capacity) |
"this is complex and will take some time" | Hedging about difficulty instead of just doing the work. |
Full regexes and corrections: Anti-Patterns.
Commands¶
| Command | What it does |
|---|---|
/dehumanize:status |
Show this session's violation count and the most recent matches. |
/dehumanize:patterns |
List the five patterns with severity, regex, and examples. |
/dehumanize:audit |
Scan the current session transcript for all violations. |
/dehumanize:fix |
Rewrite the last assistant turn to remove human framing. |
Why¶
Claude is trained on human-written text, so by default it imitates human behavior, not just human language. A human engineer asks a teammate to paste a file because they can't reach it. A human estimates a feature in weeks because they work eight hours a day. A human softens bad news with an apology because the listener has feelings.
None of that applies to an AI agent. It has direct filesystem and shell access, no working day, and no counterpart who needs emotional cushioning. When the model reaches for these scripts anyway, it's a human in a mech suit — wearing the shape of the tool but moving like the operator.
dehumanize catches those reflexes and strips them, so the agent behaves like what it is.
How it works¶
Three hooks, pure bash, no dependencies:
- SessionStart —
hooks/session-init.shresets per-session violation state and prints a one-screen reminder of the operating rules (read directly, parallelize, no human-time language). - Stop — scans the completed response for the five anti-patterns and records any matches to the session's violation log.
- UserPromptSubmit — when prior violations exist, injects a terse correction into context so the next turn self-corrects instead of repeating the reflex.
Warning
The Stop hook detects violations after the response is already shown. The fix lands on the next turn, not retroactively. Hooks cannot rewrite a response that has already streamed.
Backtesting¶
Patterns were validated against real history: 6,300 session logs across 464 projects. human_time dominated real-world hits — overwhelmingly sprint and weeks of work used as planning units.
See Backtesting for representative findings.
Configuration¶
State directory, optional statusline, and hook timeouts: Configuration.
Features¶
| Piece | What it does |
|---|---|
| SessionStart hook | Reset per-session state; print a one-screen operating reminder |
| Stop hook | Scan the completed response for five human-framing patterns |
| UserPromptSubmit hook | Inject a short correction when prior violations exist |
dehumanize skill |
On-demand rewrite: access data directly, parallelize, drop filler |
| Four slash commands | status, patterns, audit, fix for live and transcript review |
| Optional statusline | Live violation counter via install.sh |
Development¶
git clone https://github.com/88plug/dehumanize.git
cd dehumanize
bash tests/smoke.sh
Load the local path via Claude Code's /plugin flow for iteration. Docs site is MkDocs Material (mkdocs.yml + docs/).