Skip to content
Back to skills

Mode

ASecurity

Get or set daemon operating mode - switch between default and unattended (blocks Stop events)

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
ai-agentspythonbash

Works with

  • claude code

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add Edmonds-Commerce-Limited/claude-code-hooks-daemon --skill mode --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mode?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mode
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/edmonds-commerce-limited-mode/badge)](https://www.skillsdirectory.com/skills/edmonds-commerce-limited-mode)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mode
description: Get or set daemon operating mode - switch between default and unattended (blocks Stop events)
argument-hint: "[get|unattended|default] [message]"
---

# /mode - Daemon Mode Management

## Run this first

Claude Code loads this markdown and nothing else — the file below is not run
for you, and it holds the procedure to follow (Plan 00324):

```bash
bash "${CLAUDE_SKILL_DIR:-.claude/skills/mode}/invoke.sh" <the arguments the user typed>
```

Follow its output exactly; what is written here is orientation.

## Description

View or change the daemon's operating mode. Supports `default` (normal operation) and `unattended` (blocks Stop events to keep Claude working autonomously).

## Usage

```claude-code
# Show current mode
/mode
/mode get

# Switch to unattended mode (blocks Stop events)
/mode unattended

# Switch to unattended with custom task message
/mode unattended finish the release and run all tests

# Switch back to default mode
/mode default
```

## Modes

| Mode         | Behaviour                                                                      |
| ------------ | ------------------------------------------------------------------------------ |
| `default`    | Normal operation - all handlers process events as configured                   |
| `unattended` | Blocks Stop events unconditionally to keep Claude working without interruption |

## What Unattended Mode Does

When enabled, a **mode interceptor** runs before the handler chain on every event:

- **Stop events**: Blocked with a DENY response instructing Claude to continue working
- **SubagentStop events**: NOT blocked (subagents should stop normally)
- **All other events**: Pass through to normal handler chain unchanged

The interceptor includes re-entry protection (checks `stop_hook_active` flag) to prevent infinite loops.

## Custom Messages

When switching to unattended mode, you can include a custom message that gets appended to the block reason. This lets you give Claude specific instructions about what to work on:

```claude-code
/mode unattended complete all remaining tasks in the plan
```

The message appears in the Stop event denial reason, so Claude sees it when it tries to stop.

## Python Path Detection

There is no interpreter to detect. The deployed wrapper resolves the
fingerprint-keyed venv itself, and lives at the same place relative to the
daemon root in both install modes:

```bash
# self-install (daemon development)
./bin/hooks-daemon <command>

# normal install
.claude/hooks-daemon/bin/hooks-daemon <command>
```

## IPC Protocol

The skill communicates with the daemon via Unix socket system requests:

**Get mode:**

```json
{"event": "_system", "hook_input": {"action": "get_mode"}}
```

**Set mode:**

```json
{"event": "_system", "hook_input": {"action": "set_mode", "mode": "unattended", "custom_message": "optional"}}
```

## Output

### On get mode:

```
Mode: default
```

### On set unattended:

```
Mode: unattended (changed)
Message: finish the release
```

### On set default:

```
Mode: default (changed)
```

## Requirements

- Daemon must be running
- Python venv must be available (self-install or normal install)

## Version

Introduced in: v2.17.0

Files in this skill

  • SKILL.md2.8 KB
  • invoke.sh1.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.