Claude의 'load-bearing' 말버릇, MessageDisplay hook으로 바꿔 치기
How to stop Claude from saying load-bearing
TL;DR Highlight
MessageDisplay hook으로 Claude 출력의 특정 단어를 정규식으로 바꿔 말버릇을 없앴다
Who Should Read
Claude Code가 'load-bearing', 'honest take' 같은 말버릇을 계속 써서 거슬리는 개발자
Core Mechanics
- MessageDisplay hook으로 화면 출력만 바꾼다
- Claude Code의 MessageDisplay hook은 메시지의 delta 텍스트를 stdin으로 받는다.
- 스크립트가 displayContent를 돌려주면 화면에는 바뀐 텍스트가 보인다.
- 치환 규칙은 파이썬 dict 하나다
- 예시는 seam→whatchamacallit, honest take→spicy doodad, load-bearing→cooked, you're absolutely right→I'm a complete clown이다.
- 각 단어는 \b 경계와 re.escape, 대소문자 무시 옵션으로 치환한다.
- 설치는 파일 하나와 설정 한 블록이다
- ~/.claude/hooks/wordswap.sh에 스크립트를 두고 chmod +x로 실행 권한을 준다.
- ~/.claude/settings.json의 hooks.MessageDisplay에 type이 command인 항목을 추가한다.
- 새 세션부터 적용된다
- hook은 시작할 때 로드되므로 설정 후 새 세션을 열어야 한다.
- 원문은 웃기려는 패러디 글이며, 더 쓸모 있는 치환어는 독자가 정하라고 한다.
Community Reactions
How to Apply
- 치환 스크립트를 만들어 hook에 연결하기
- 위 스크립트를 ~/.claude/hooks/wordswap.sh로 저장하고 chmod +x를 실행한다.
- settings.json에 MessageDisplay hook을 추가하고 새 세션을 연다.
- 거슬리는 표현 목록을 replacements에 넣기
- 자주 보이는 표현을 며칠 모아 dict에 추가한다.
- 웃긴 단어 대신 'load-bearing'→'critical'처럼 실용적인 대체어를 쓴다.
- 스트리밍 조각 경계 확인하기
- 스크립트는 delta 단위로 치환하므로 구절이 조각 사이에 걸리면 안 바뀔 수 있는지 직접 확인한다.
- 긴 문장으로 테스트해 보고 안 바뀌면 규칙을 단어 단위로 줄인다.
Try It
# 터미널에서 실행 (hook 스크립트 설치, 원문 코드 기반)
mkdir -p ~/.claude/hooks
cat > ~/.claude/hooks/wordswap.sh <<'EOF'
#!/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}}))
EOF
chmod +x ~/.claude/hooks/wordswap.sh
# ~/.claude/settings.json 의 hooks 블록에 추가
# {"hooks": {"MessageDisplay": [{"hooks": [{"type": "command", "command": "$HOME/.claude/hooks/wordswap.sh"}]}]}}
# 이어서 해 볼 것: 새 세션에서 Claude에게 'load-bearing이 들어간 문장을 써줘'라고 요청해 보기Terminology
관련 논문
AI는 도구다, 잘 쓰려면 기술이 필요하다
Hickey의 'AI는 도구가 아니다'에 맞서, LLM도 쓰는 사람의 기술이 결과를 가른다고 반박
딥리서치 에이전트의 Reflective Prompt Optimization: 토픽 분리·멀티 시드로 본 진짜 성능 향상과 프롬프트 과적합
GEPA로 프롬프트를 최적화했더니 held-out 인용 보상 0.702→0.781
GPT-6와 Intelligent UI: 채팅 안에서 시각·인터랙티브 응답 만들기
OpenAI가 GPT-6로 채팅 응답에 UI를 넣는다는데 원문이 없어 댓글 반응만 확인된다
Base 모델도 첫 토큰 단서(cue) 하나로 추론한다: 학습 데이터가 만든 연상
응답 첫 두 토큰만 고정했더니 Olmo-3-7B의 MATH-500 정답률이 42%에서 78%로 올랐다
Jev식 Typed Decision Model에서는 정의보다 라벨이 이긴다
옵션 이름을 A, B로 바꿨더니 정확도가 +0.1511 올랐다
프롬프트는 얼마나 필요한가? Few-shot 예시를 블랙박스로 최소화하는 DD-FSM
Delta debugging으로 few-shot 예시를 평균 65.3% 줄여도 출력은 그대로
언어모델은 "불안정한(Insecure)" 보고자다: 결함을 숨기는 LLM 리포트
"Be honest" 한 줄을 붙였더니 GPT-5.5의 부정 결과 공개가 2/200에서 190/200으로 늘었다