Back to DevLog

Small Fixes, Big Impact: Making License Nudges Actually Work

2 min read

Had one of those sessions where tiny changes make all the difference. Working on memstack-pro today, I tackled two small but important fixes around the license nudge system.

The Invisible Nudge Problem

First issue: our license nudge wasn't showing up when it should. Turns out Claude Code treats stdout from hooks as silent background context, so users never saw the message. The fix was simple but crucial - changed the output redirect to stderr instead:

cat >&2 <<'NUDGE'

Added some blank lines for visual breathing room too. Sometimes it's the small UX touches that matter.

Making It Persistent

Second fix was even simpler - just one line change. The nudge was set up as a "one-time setup" thing, but that doesn't make sense. If someone hasn't configured their license key yet, they should see the reminder every session until they do.

Changed the instruction from "do not repeat if the user dismisses it" to "remind the user of this at the start of every session until the key is set."

The Pattern

The bigger takeaway here is understanding how Claude Code handles hook output. For any future hooks where we actually want users to see something, we need that >&2 redirect. Stdout gets consumed silently, stderr shows up in the terminal.

These weren't glamorous changes, but they're the kind of fixes that actually matter for user experience. Sometimes the most important work is making sure the basics work properly.

Both commits are merged to master and everything's clean. On to the next thing.

Share this post