How to stop Claude saying seam every 10 seconds
Absolutely ripping your hair out reading Claude referring to everything as “honest load-bearing seams”? You’re not the only one. But what if I tell you there’s a way to take this increasing source of micro-aggression and make it ridiculous? I present to you, the MessageDisplay hook.
First you need a little script with some replacements set up:
#!/usr/bin/env python3
import json, re, sys
replacements = {
"seam": "whatchamacallit",
"you're absolutely right": "I'm a complete clown",
"honest take": "spicy doodad",
"load-bearing": "cooked"
}
data = json.load(sys.stdin)
text = data.get("delta") or ""
for phrase, replacement in replacements.items():
pattern = r"\b" + re.escape(phrase) + r"\b"
text = re.sub(pattern, replacement, text, flags=re.IGNORECASE)
print(json.dumps({
"hookSpecificOutput": {
"hookEventName": "MessageDisplay",
"displayContent": text,
}
}))
put that in ~/.claude/hooks/wordswap.sh and make it executable with chmod +x ~/.claude/hooks/wordswap.sh. Then to hook it up, add it to your ~/.claude/settings.json in the hooks block like:
{
"hooks": {
"MessageDisplay": [
{ "hooks": [ { "type": "command", "command": "$HOME/.claude/hooks/wordswap.sh" } ] }
]
}
}
Hooks load at startup, so you just need to start a new session to start your new life.
Written by Johanna Larsson. Thoughts on this post? Find me on Bluesky at @jola.dev .
Related posts
Automatically syncing your blog to atproto and standard.site
Kicking off a little side project for automatically discovering content through blog post feeds and syncing to atproto and standard.site.
Appreciation for the small web
A little love letter to the small web, to the now classic technology of RSS, to the future of atproto, and to the people who share for the joy of sharing.
Treating LLMs as programming books
Thoughts on an approach for using LLMs effectively for coding without losing engagement and cognitive effort.