---
name: Peon Ping Rename
slug: peon-ping-rename
category: Automation
description: Peon Ping Rename sets a custom name for the current Claude session, shown in desktop notification titles and the terminal tab title. Use /peon-ping-rename with a name to label the session, or call it without arguments to reset to auto-detect.
github: "https://github.com/PeonPing/peon-ping/tree/main/skills/peon-ping-rename"
language: Shell
stars: 4992
forks: 373
install: "npx degit https://github.com/PeonPing/peon-ping/tree/main/skills/peon-ping-rename ~/.claude/skills/peon-ping-rename"
installs_to: ~/.claude/skills/peon-ping-rename
source_path: skills/peon-ping-rename/SKILL.md
collection_size: 7
category_size: 1523
collection_url: "https://dirskills.com/collections/PeonPing/peon-ping"
added: 2026-08-16T07:00:50.481Z
last_synced: 2026-08-16T07:00:50.481Z
canonical_url: "https://dirskills.com/skills/peon-ping-rename"
---

# Peon Ping Rename

Peon Ping Rename sets a custom name for the current Claude session, shown in desktop notification titles and the terminal tab title. Use /peon-ping-rename with a name to label the session, or call it without arguments to reset to auto-detect.

**Install:**

```bash
npx degit https://github.com/PeonPing/peon-ping/tree/main/skills/peon-ping-rename ~/.claude/skills/peon-ping-rename
```

## README

# peon-ping-rename

Give the current session a custom name shown in desktop notification titles and the terminal tab title.

## How it works

When the user types `/peon-ping-rename <name>`, a **UserPromptSubmit hook** intercepts the command before it reaches the model:

1. Extracts the session ID and name
2. Writes `session_names[session_id] = name` to `.state.json`
3. Immediately updates the terminal tab title via ANSI escape sequence
4. Returns confirmation (zero tokens used)

On every subsequent hook event, peon.sh reads `session_names[session_id]` as the highest-priority project name. Multiple tabs in the same repo each get independent names.

## Usage

```
/peon-ping-rename Auth Refactor
/peon-ping-rename API: payments
/peon-ping-rename          ← reset to auto-detect
```

Names are capped at 50 characters. Allowed: letters, numbers, spaces, dots, hyphens, underscores.

## Manual fallback (if hook fails)

### 1. Get the session ID

```bash
echo "$CLAUDE_SESSION_ID"
```

### 2. Write name to state

```bash
python3 -c "
import json, os, time
state_path = os.path.expanduser('~/.claude/hooks/peon-ping/.state.json')
try:
    state = json.load(open(state_path))
except:
    state = {}
state.setdefault('session_names', {})['SESSION_ID_HERE'] = 'My Session Name'
json.dump(state, open(state_path, 'w'), indent=2)
"
```

### 3. Trigger a hook event to refresh the tab title

Submit any prompt — peon.sh will pick up the new name on the next `UserPromptSubmit` or `Stop` event.

## Reset

```
/peon-ping-rename
```

Or remove the session ID from `session_names` in `.state.json` directly.

## Priority

`/peon-ping-rename` > `CLAUDE_SESSION_NAME` env var > `.peon-label` file > `notification_title_script` > `project_name_map` > `notification_title_override` > git repo name > folder name
