Hey, it's me, josh - as a memoji

josh.miami

Two Claude Code tricks I actually use every day

Josh Echeverri
Josh Echeverri
1 min read

Posted these on Threads recently and got enough questions that I wanted to write them up properly.

Switch between Claude Code accounts instantly

Claude Code uses one global config. If you work across multiple accounts (say, work and a personal OSS project), they share billing and auth by default. Annoying, and bad for IP ownership.

Two files control everything:

  • ~/.claude/settings.json - your config
  • ~/.claude.json - your auth session

Swap both and you're fully switched.

Save your profiles:

# Work
cp ~/.claude/settings.json ~/.claude/settings.work.json
cp ~/.claude.json ~/.claude.work.json

# Personal (after authenticating with that account)
cp ~/.claude/settings.json ~/.claude/settings.personal.json
cp ~/.claude.json ~/.claude.personal.json

Add to ~/.zshrc:

alias claude-work='
  cp ~/.claude/settings.work.json ~/.claude/settings.json &&
  cp ~/.claude.work.json ~/.claude.json &&
  echo "💼 Work"
'

alias claude-personal='
  cp ~/.claude/settings.personal.json ~/.claude/settings.json &&
  cp ~/.claude.personal.json ~/.claude.json &&
  echo "🏠 Personal"
'

Run claude-work or claude-personal and you're fully switched. Scale to as many profiles as you need.

Audio notifications when Claude finishes (Mac)

Claude Code has hooks that fire on certain events. You can use them to play macOS system sounds so you know when it's done or needs your attention without watching the terminal.

Add this to ~/.claude/settings.json:

"hooks": {
  "Stop": [
    {
      "matcher": "",
      "hooks": [
        {
          "type": "command",
          "command": "afplay /System/Library/Sounds/Glass.aiff",
          "async": true
        }
      ]
    }
  ],
  "Notification": [
    {
      "matcher": "",
      "hooks": [
        {
          "type": "command",
          "command": "afplay /System/Library/Sounds/Ping.aiff",
          "async": true
        }
      ]
    }
  ]
}

Glass plays when Claude stops. Ping when it needs your attention. Both are built into macOS, nothing to install.

To change the sound, swap the .aiff filename for anything in /System/Library/Sounds/.

Related Posts

Claudedogged the blog

My blog was a piece of shit. I fixed it. Eight features, one session, three mistakes. I'm coining a term.

The Model Is Not the Variable Anymore. The System Is.

The real shift was not becoming a power user. It was realizing the model was no longer the main variable. The surrounding system was.

I Canceled Cursor. Claude Code Is the Default.

Canceling Cursor was not a dramatic decision. The overlap phase was already over. Claude Code is the default and has been for a while.