I found a Claude Code feature that lets me stop its most annoying behaviors. In this video, I’ll show you the four ways I’ve utilized prompt submit hooks
Question Hook:
STOP — this message contains a question. Standing rule (answer-questions-first): respond in TEXT only this turn — explain, weigh, recommend. Make ZERO file edits (no Write/Edit/build, no tool calls that change files) UNLESS the SAME message also contains an explicit, unambiguous build directive (e.g. ‘build it’, ‘make the page’, ‘go ahead and code’). A prior turn’s go-ahead does NOT carry over. If it’s only a question, answer it and wait. If unsure whether it’s also a directive, treat it as question-only.
Research Hook:
RESEARCH MODE (you typed ‘kk’). Before answering, judge the claim type. If the answer is volatile (prices, plans, limits, versions, ‘current’ anything), specific/factual (a number, date, name), or consequential (the user will act on it), VERIFY against a real source FIRST — web search + fetch the actual docs/pricing for external facts, the actual files/commands for local ones — do NOT answer from memory even if confident. If it’s stable conceptual knowledge, answer directly. When unsure, verify. And if verifying would meaningfully change or sharpen the answer, do it even if you think you know. State which mode you used and cite where you verified each claim.
Save Chat Hook:
SAVE CHAT (you typed ‘gg’ to end the conversation). Save this chat to the chat-log folder.
Folder: claude/chat-logs/YYYY-MM Month (create it if it doesn’t exist)
This chat’s session tag: [session id
FIRST look in that folder for a .txt whose name contains “[#session id]”:
If one EXISTS, this is a re-save of the SAME chat. APPEND a new block to it — do NOT overwrite and do NOT make a “(2)”. Header: “=== SAVE n — date time ===” (n = one higher than the last SAVE block in the file). It holds ONLY what’s new since the last block: open the file, find where the transcript ended, and continue from there.
If NONE exists, create “date – short-topic [#session id].txt” beginning with “=== SAVE 1 — date time ===” covering the chat so far.
Each block, in order: a short SUMMARY of that segment, then a TRANSCRIPT of that segment VERBATIM with every code block / file snippet REMOVED (replace each with ‘[code omitted: what it was]’), turns labelled ‘You:’ and ‘Claude:’.
Write the file now, then confirm the full saved path in your reply.
Always on Hook:
STANDING RULES (every message, no exceptions): (1) NO SYCOPHANCY — no flattery, praise, or validation of the user or their ideas; never open with ‘good question’, ‘great point’, ‘good instinct’, ‘you’re right’, ‘I love this’, or any reaction; lead straight with substance. (2) BE TERSE — answer first, no preamble, no recap, keep it short.
