/config
View or modify heartbeat settings
> /plugin marketplace add moazbuilds/claudeclaw > /plugin install claudeclaw@claudeclaw
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/config
Context preview
What this command does when you run it.
View or modify heartbeat settings
Command definition
config.mddescription: View or modify heartbeat settings
View or modify the heartbeat daemon settings. Use `$ARGUMENTS` to determine the action.
Parse `$ARGUMENTS` to identify what the user wants. If no arguments are given, show the current config.
Sub-commands
`show` (default when no arguments)
1. Read `.claude/claudeclaw/settings.json`. 2. Display all settings clearly:
**General**
- Model: (e.g. `opus`, `sonnet`, `haiku`, `glm` or "default")
- API token: (first 5 chars + "..." or "not configured"; used when `model` is `glm`)
- Fallback model: (e.g. `glm`, `sonnet`, or "not configured")
- Fallback API token: (first 5 chars + "..." or "not configured")
- Timezone: (e.g. `America/New_York` or "UTC")
**Heartbeat**
- Enabled: yes/no
- Interval: Xm
- Prompt: (show full prompt or "not set")
- Exclude windows: (list each window's days + start-end, or "none")
- Forward to Telegram: yes/no (`HEARTBEAT_OK` is forwarded only when enabled)
**Telegram**
- Token: (first 5 chars + "..." or "not configured")
- Allowed users: (list IDs or "none")
**Security**
- Level: (locked/strict/moderate/unrestricted)
- Allowed tools: (list or "default")
- Disallowed tools: (list or "none")
**Web UI**
- Enabled: yes/no
- Address: host:port
3. Also list any cron jobs from the configured jobs directory (see `jobsDir` in settings, default: `.claude/claudeclaw/jobs/`) with their name, schedule, and notify mode. 4. Remind the user that changes are hot-reloaded every 30s — no daemon restart needed.
`heartbeat on` / `heartbeat off` / `heartbeat enable` / `heartbeat disable`
Toggle the heartbeat on or off.
1. Read `.claude/claudeclaw/settings.json`. 2. Set `heartbeat.enabled` to `true` or `false` based on the command. 3. Write the updated settings back. 4. Confirm the change.
`heartbeat interval <minutes>` / `interval <minutes>`
Change the heartbeat interval.
1. Parse the number of minutes from `$ARGUMENTS`. If not provided or invalid, use **AskUserQuestion**: "How often should the heartbeat run?" (header: "Interval", options: "5 minutes", "15 minutes (Recommended)", "30 minutes", "60 minutes") 2. Read `.claude/claudeclaw/settings.json`. 3. Set `heartbeat.interval` to the new value. 4. Write the updated settings back. 5. Confirm the change. The daemon will pick up the new interval within 30 seconds.
`heartbeat prompt` / `prompt`
Change the heartbeat prompt.
1. Read `.claude/claudeclaw/settings.json` and show the current prompt. 2. Use **AskUserQuestion**: "What prompt should the heartbeat run?" (header: "Prompt", options: suggest 2-3 prompts relevant to the project, plus the current prompt if set as an option) 3. Set `heartbeat.prompt` to the new value. 4. Write the updated settings back. 5. Confirm the change.
`heartbeat telegram on` / `heartbeat telegram off` / `heartbeat forward telegram on` / `heartbeat forward telegram off`
Toggle whether heartbeat outputs are forwarded to Telegram.
1. Read `.claude/claudeclaw/settings.json`. 2. Set `heartbeat.forwardToTelegram` to `true` for `on` and `false` for `off`. 3. Write the updated settings back. 4. Confirm the change. 5. Clarify behavior:
- `true` = forward all heartbeat replies (including `HEARTBEAT_OK`)
- `false` = suppress `HEARTBEAT_OK` and forward only actionable heartbeat outputs
`telegram token <token>` / `telegram token`
Set or update the Telegram bot token.
1. If token is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "What is your Telegram bot token from @BotFather?" (header: "Token", options: let user type via Other) 3. Read `.claude/claudeclaw/settings.json`. 4. Set `telegram.token` to the new value. 5. Write and confirm.
`telegram users <id1,id2,...>` / `telegram users`
Set the allowed Telegram user IDs.
1. If IDs are in `$ARGUMENTS`, parse them as comma-separated numbers. 2. Otherwise, use **AskUserQuestion**: "What Telegram user IDs should be allowed? (comma-separated)" (header: "User IDs", options: let user type via Other) 3. Read `.claude/claudeclaw/settings.json`. 4. Set `telegram.allowedUserIds` to the array of numbers. 5. Write and confirm.
`telegram off` / `telegram disable`
Disable Telegram integration.
1. Read `.claude/claudeclaw/settings.json`. 2. Set `telegram.token` to `""` and `telegram.allowedUserIds` to `[]`. 3. Write and confirm.
`model <name>` / `model`
Set the Claude model to use for sessions.
1. If model name is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "Which Claude model should ClaudeClaw use?" (header: "Model", options: "opus (default)", "sonnet", "haiku", "glm") 3. Read `.claude/claudeclaw/settings.json`. 4. Set `model` to the new value. 5. If the selected model is `glm`, ask for `api` token (unless already set) and save it to top-level `api`. 6. If model is changed away from `glm`, keep `api` unchanged. 7. Write and confirm.
`api <token>` / `api`
Set or update the API token used when `model` is `glm`.
1. If token is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "What API token should ClaudeClaw use for glm?" (header: "API token", options: let user type via Other) 3. Read `.claude/claudeclaw/settings.json`. 4. Set top-level `api` to the new value. 5. Write and confirm.
`fallback model <name>` / `fallback model`
Set the fallback model used when the primary model hits a rate limit.
1. If fallback model name is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "Which fallback model should ClaudeClaw use?" (header: "Fallback model", options: "glm (Recommended)", "sonnet", "haiku") 3. Read `.claude/claudeclaw/settings.json`. 4. Set `fallback.model` to the chosen value (`""` for none). 5. Write and confirm.
`fallback api <token>` / `fallback api`
Set or clear the API token for the fallback model.
1. If token is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestio
Read more
description: View or modify heartbeat settings
View or modify the heartbeat daemon settings. Use `$ARGUMENTS` to determine the action.
Parse `$ARGUMENTS` to identify what the user wants. If no arguments are given, show the current config.
Sub-commands
`show` (default when no arguments)
1. Read `.claude/claudeclaw/settings.json`. 2. Display all settings clearly:
**General**
- Model: (e.g. `opus`, `sonnet`, `haiku`, `glm` or "default")
- API token: (first 5 chars + "..." or "not configured"; used when `model` is `glm`)
- Fallback model: (e.g. `glm`, `sonnet`, or "not configured")
- Fallback API token: (first 5 chars + "..." or "not configured")
- Timezone: (e.g. `America/New_York` or "UTC")
**Heartbeat**
- Enabled: yes/no
- Interval: Xm
- Prompt: (show full prompt or "not set")
- Exclude windows: (list each window's days + start-end, or "none")
- Forward to Telegram: yes/no (`HEARTBEAT_OK` is forwarded only when enabled)
**Telegram**
- Token: (first 5 chars + "..." or "not configured")
- Allowed users: (list IDs or "none")
**Security**
- Level: (locked/strict/moderate/unrestricted)
- Allowed tools: (list or "default")
- Disallowed tools: (list or "none")
**Web UI**
- Enabled: yes/no
- Address: host:port
3. Also list any cron jobs from the configured jobs directory (see `jobsDir` in settings, default: `.claude/claudeclaw/jobs/`) with their name, schedule, and notify mode. 4. Remind the user that changes are hot-reloaded every 30s — no daemon restart needed.
`heartbeat on` / `heartbeat off` / `heartbeat enable` / `heartbeat disable`
Toggle the heartbeat on or off.
1. Read `.claude/claudeclaw/settings.json`. 2. Set `heartbeat.enabled` to `true` or `false` based on the command. 3. Write the updated settings back. 4. Confirm the change.
`heartbeat interval <minutes>` / `interval <minutes>`
Change the heartbeat interval.
1. Parse the number of minutes from `$ARGUMENTS`. If not provided or invalid, use **AskUserQuestion**: "How often should the heartbeat run?" (header: "Interval", options: "5 minutes", "15 minutes (Recommended)", "30 minutes", "60 minutes") 2. Read `.claude/claudeclaw/settings.json`. 3. Set `heartbeat.interval` to the new value. 4. Write the updated settings back. 5. Confirm the change. The daemon will pick up the new interval within 30 seconds.
`heartbeat prompt` / `prompt`
Change the heartbeat prompt.
1. Read `.claude/claudeclaw/settings.json` and show the current prompt. 2. Use **AskUserQuestion**: "What prompt should the heartbeat run?" (header: "Prompt", options: suggest 2-3 prompts relevant to the project, plus the current prompt if set as an option) 3. Set `heartbeat.prompt` to the new value. 4. Write the updated settings back. 5. Confirm the change.
`heartbeat telegram on` / `heartbeat telegram off` / `heartbeat forward telegram on` / `heartbeat forward telegram off`
Toggle whether heartbeat outputs are forwarded to Telegram.
1. Read `.claude/claudeclaw/settings.json`. 2. Set `heartbeat.forwardToTelegram` to `true` for `on` and `false` for `off`. 3. Write the updated settings back. 4. Confirm the change. 5. Clarify behavior:
- `true` = forward all heartbeat replies (including `HEARTBEAT_OK`)
- `false` = suppress `HEARTBEAT_OK` and forward only actionable heartbeat outputs
`telegram token <token>` / `telegram token`
Set or update the Telegram bot token.
1. If token is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "What is your Telegram bot token from @BotFather?" (header: "Token", options: let user type via Other) 3. Read `.claude/claudeclaw/settings.json`. 4. Set `telegram.token` to the new value. 5. Write and confirm.
`telegram users <id1,id2,...>` / `telegram users`
Set the allowed Telegram user IDs.
1. If IDs are in `$ARGUMENTS`, parse them as comma-separated numbers. 2. Otherwise, use **AskUserQuestion**: "What Telegram user IDs should be allowed? (comma-separated)" (header: "User IDs", options: let user type via Other) 3. Read `.claude/claudeclaw/settings.json`. 4. Set `telegram.allowedUserIds` to the array of numbers. 5. Write and confirm.
`telegram off` / `telegram disable`
Disable Telegram integration.
1. Read `.claude/claudeclaw/settings.json`. 2. Set `telegram.token` to `""` and `telegram.allowedUserIds` to `[]`. 3. Write and confirm.
`model <name>` / `model`
Set the Claude model to use for sessions.
1. If model name is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "Which Claude model should ClaudeClaw use?" (header: "Model", options: "opus (default)", "sonnet", "haiku", "glm") 3. Read `.claude/claudeclaw/settings.json`. 4. Set `model` to the new value. 5. If the selected model is `glm`, ask for `api` token (unless already set) and save it to top-level `api`. 6. If model is changed away from `glm`, keep `api` unchanged. 7. Write and confirm.
`api <token>` / `api`
Set or update the API token used when `model` is `glm`.
1. If token is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "What API token should ClaudeClaw use for glm?" (header: "API token", options: let user type via Other) 3. Read `.claude/claudeclaw/settings.json`. 4. Set top-level `api` to the new value. 5. Write and confirm.
`fallback model <name>` / `fallback model`
Set the fallback model used when the primary model hits a rate limit.
1. If fallback model name is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestion**: "Which fallback model should ClaudeClaw use?" (header: "Fallback model", options: "glm (Recommended)", "sonnet", "haiku") 3. Read `.claude/claudeclaw/settings.json`. 4. Set `fallback.model` to the chosen value (`""` for none). 5. Write and confirm.
`fallback api <token>` / `fallback api`
Set or clear the API token for the fallback model.
1. If token is in `$ARGUMENTS`, use it directly. 2. Otherwise, use **AskUserQuestio
A lightweight, open-source OpenClaw version built into your Claude Code.
Repo: moazbuilds/claudeclaw
Other commands on moazbuilds-claudeclaw.
jobs
Create, list, edit, or delete cron jobs. Triggers: create a job, add a job, new job, schedule…

