Agent Create + Dedicated Telegram Group
Create one dedicated Telegram group per agent, bind the agent to that group, and set an isolated workspace path.
Script-first Rule
Prefer bundled scripts for deterministic steps (more stable + lower token cost). Only do manual JSON editing when scripts cannot cover a special case.
Use:
scripts/provision_config.py for agent/config/binding/no-mention setup (with automatic backup of openclaw.json)
scripts/init_workspace.py for USER.md / IDENTITY.md / SOUL.md initialization
Access Scope
This skill accesses the following files on the host:
~/.openclaw/openclaw.json — read (model discovery) and write (agent binding)
~/.openclaw/cron/jobs.json — read-only (for job listing if needed)
~/claw-<agent-name>/ — workspace directory created by script
~/.openclaw/agents/<agent-id>/agent/ — directory created (no auth files copied)
Config Safety
scripts/provision_config.py reads and writes ~/.openclaw/openclaw.json.
- By default it creates a backup file:
~/.openclaw/openclaw.json.bak.<timestamp>.
- It updates only:
agents.list (add/update target agent) — does NOT copy auth credentials
bindings (add target telegram group binding)
channels.telegram.groups.<chat_id>.requireMention=false
gateway.reload.mode only if missing (sets default hybrid)
- The skill does NOT propagate API keys or auth tokens between agents.
- Gateway-level auth is inherited automatically; do not manually copy auth files.
Inputs
Collect (before executing):
agent_name (required)
model (required): ask user explicitly which model to use; model options must be read live from the user’s ~/.openclaw/openclaw.json (do not hardcode examples)
- Optional
telegram_group_title override (custom group name)
- Initialization preferences (required ask):
- whether to create/update
USER.md
- whether to create/update
IDENTITY.md
- whether to create/update
SOUL.md
- If initialization is enabled, collect content fields before writing files:
USER.md: user name / preferred call name / language / goals / notes
IDENTITY.md: agent display name / vibe / emoji (optional)
SOUL.md: role/mission / tone / constraints (short bullet points)
Normalize agent_name:
- Keep lowercase letters, digits, and hyphens only.
- Replace spaces/underscores with
-.
- Use this value in paths and IDs.
Telegram group title rule:
- If user provides
telegram_group_title, use it directly.
- If not provided, generate default title from agent name in PascalCase.
- Example:
test-skill -> TestSkill, bilingual-agent -> BilingualAgent.
Workflow
- Read available models from
~/.openclaw/openclaw.json first, then confirm inputs with user (agent name, model, init-file preferences, optional telegram group title).
- Build workspace path as
~/claw-<agent-name> and create it if missing.
- Resolve group title:
- custom
telegram_group_title if provided
- otherwise PascalCase(agent_name)
- Create and bind Telegram group (use resolved group title):
- use browser automation/user-account flow (Telegram bot API cannot reliably create groups)
- CONFIRM with user before triggering browser automation (explicit yes/no required)
- if browser automation is unavailable, request the minimal manual steps and resume
- Create/update OpenClaw config via script (preferred):
- CONFIRM with user before modifying openclaw.json (explicit yes/no required)
python3 scripts/provision_config.py --agent-name <agent_name> --model <model> --chat-id <chat_id>
- this sets: agent entry, workspace, binding, and
requireMention=false
- Apply config and activate it:
- if hot reload is enabled, verify reload logs show applied changes
- if reload is off or not applied, CONFIRM with user before restarting gateway (explicit yes/no required)
- restart gateway only after user approval
- Bootstrap agent runtime files (required for first-run stability):
- ensure
~/.openclaw/agents/<agent-id>/agent exists
- do NOT copy any auth files from other agents (this prevents credential/API key propagation)
- new agents inherit authentication from the gateway's shared auth context automatically
- do NOT manually copy or create auth-profiles.json, auth.json, or models.json
- If initialization is requested, ask user for file content fields first, then write files:
- collect required values for
USER.md / IDENTITY.md / SOUL.md
- then run:
python3 scripts/init_workspace.py --workspace <workspace> --agent-name <agent_name> [--with-user] [--with-identity] [--with-soul]
- if user provided custom text, apply it after script initialization (overwrite placeholders)
- Ensure routing validity for current schema (no invalid allowFrom entries for groups).
- Post-provision verification:
- send a test message in group and ask user to send
ping
- confirm agent responds without
@mention
- Return completion summary with:
- agent name
- model
- workspace path
- group title
- chat_id
- no-mention reply mode (
enabled/disabled)
- status and next step (if any)
Telegram Automation Rules
- Group creation/deletion and member operations should use browser automation (user-account flow).
- For browser flow, prefer Chrome relay profile for existing logged-in Telegram sessions.
- If no connected Chrome tab is available, ask user to attach once, then continue.
- If Telegram shows confirmation/captcha that cannot be automated, request one manual click, then resume.
OpenClaw Command Discovery
Do not invent OpenClaw commands.
When agent create/update command syntax is unknown:
- Run
openclaw help.
- If needed, run
openclaw <subcommand> --help for the relevant subcommand.
- Use only discovered command forms.
Idempotency
- If
~/claw-<agent-name> already exists, reuse it.
- If a same-name group already exists, confirm whether to reuse or create a fresh one.
- If agent already exists, update model/binding/workdir instead of duplicating.
Reliability Checks (must do)
- Verify
requireMention=false for the bound group.
- Verify gateway config actually applied:
- check reload mode/status logs (
config hot reload applied, restarting telegram channel)
- if reload is
off or not applied, restart gateway and re-check logs.
- Send one bot-originated test message to the new group, then require one live user
ping.
- Verify agent replies without
@mention.
- Do not claim success before
ping -> pong verification passes.
Failure Handling
If group creation succeeds but binding fails:
- Keep created group.
- Report exact failed step.
- Provide one-command resume instruction for the next run.
If chat_id cannot be resolved automatically:
- Report that as a partial success.
- Provide the shortest fallback step to fetch chat_id, then continue binding.
Output Template
Return concise status:
agent:
model:
workspace: ~/claw-<agent-name>
telegram_group:
chat_id:
binding: <done|pending>
reply_without_mention: <enabled|disabled>
initialized_files: <USER.md, IDENTITY.md, SOUL.md or subset>
verification: <passed|failed>
next_step:
1---2name: create-agent-with-telegram-group3description: Create a new OpenClaw agent and bind it to a dedicated Telegram group with workspace ~/claw-<agent-name>. Use when the user asks for one-agent-one-group setup, Telegram group binding, or repeatable agent provisioning. Always ask which model to use, ask for essential initialization choices (USER.md/IDENTITY.md/SOUL.md), and set group reply mode to no-mention-required. Explicit user confirmation is required before any high-privilege actions: modifying openclaw.json, triggering browser automation, or restarting the gateway.4---5
6
7# Agent Create + Dedicated Telegram Group
8
9Create one dedicated Telegram group per agent, bind the agent to that group, and set an isolated workspace path.
10
11## Script-first Rule
12
13Prefer bundled scripts for deterministic steps (more stable + lower token cost). Only do manual JSON editing when scripts cannot cover a special case.
14
15Use:
16- `scripts/provision_config.py` for agent/config/binding/no-mention setup (with automatic backup of `openclaw.json`)
17- `scripts/init_workspace.py` for `USER.md` / `IDENTITY.md` / `SOUL.md` initialization
18
19## Access Scope
20
21This skill accesses the following files on the host:
22- `~/.openclaw/openclaw.json` — read (model discovery) and write (agent binding)
23- `~/.openclaw/cron/jobs.json` — read-only (for job listing if needed)
24- `~/claw-<agent-name>/` — workspace directory created by script
25- `~/.openclaw/agents/<agent-id>/agent/` — directory created (no auth files copied)
26
27## Config Safety
28
29- `scripts/provision_config.py` reads and writes `~/.openclaw/openclaw.json`.
30- By default it creates a backup file: `~/.openclaw/openclaw.json.bak.<timestamp>`.
31- It updates only:
32 - `agents.list` (add/update target agent) — does NOT copy auth credentials
33 - `bindings` (add target telegram group binding)
34 - `channels.telegram.groups.<chat_id>.requireMention=false`
35 - `gateway.reload.mode` only if missing (sets default `hybrid`)
36- The skill does NOT propagate API keys or auth tokens between agents.
37- Gateway-level auth is inherited automatically; do not manually copy auth files.
38
39## Inputs
40
41Collect (before executing):
42- `agent_name` (required)
43- `model` (required): ask user explicitly which model to use; model options must be read live from the user’s `~/.openclaw/openclaw.json` (do not hardcode examples)
44- Optional `telegram_group_title` override (custom group name)
45- Initialization preferences (required ask):
46 - whether to create/update `USER.md`
47 - whether to create/update `IDENTITY.md`
48 - whether to create/update `SOUL.md`
49- If initialization is enabled, collect content fields before writing files:
50 - `USER.md`: user name / preferred call name / language / goals / notes
51 - `IDENTITY.md`: agent display name / vibe / emoji (optional)
52 - `SOUL.md`: role/mission / tone / constraints (short bullet points)
53
54Normalize `agent_name`:
55- Keep lowercase letters, digits, and hyphens only.
56- Replace spaces/underscores with `-`.
57- Use this value in paths and IDs.
58
59Telegram group title rule:
60- If user provides `telegram_group_title`, use it directly.
61- If not provided, generate default title from agent name in PascalCase.
62 - Example: `test-skill` -> `TestSkill`, `bilingual-agent` -> `BilingualAgent`.
63
64## Workflow
65
661. Read available models from `~/.openclaw/openclaw.json` first, then confirm inputs with user (agent name, model, init-file preferences, optional telegram group title).
672. Build workspace path as `~/claw-<agent-name>` and create it if missing.
683. Resolve group title:
69 - custom `telegram_group_title` if provided
70 - otherwise PascalCase(agent_name)
714. Create and bind Telegram group (use resolved group title):
72 - use browser automation/user-account flow (Telegram bot API cannot reliably create groups)
73 - **CONFIRM with user before triggering browser automation** (explicit yes/no required)
74 - if browser automation is unavailable, request the minimal manual steps and resume
755. Create/update OpenClaw config via script (preferred):
76 - **CONFIRM with user before modifying openclaw.json** (explicit yes/no required)
77 - `python3 scripts/provision_config.py --agent-name <agent_name> --model <model> --chat-id <chat_id>`
78 - this sets: agent entry, workspace, binding, and `requireMention=false`
796. Apply config and activate it:
80 - if hot reload is enabled, verify reload logs show applied changes
81 - if reload is off or not applied, **CONFIRM with user before restarting gateway** (explicit yes/no required)
82 - restart gateway only after user approval
837. Bootstrap agent runtime files (required for first-run stability):
84 - ensure `~/.openclaw/agents/<agent-id>/agent` exists
85 - do NOT copy any auth files from other agents (this prevents credential/API key propagation)
86 - new agents inherit authentication from the gateway's shared auth context automatically
87 - do NOT manually copy or create auth-profiles.json, auth.json, or models.json
888. If initialization is requested, ask user for file content fields first, then write files:
89 - collect required values for `USER.md` / `IDENTITY.md` / `SOUL.md`
90 - then run: `python3 scripts/init_workspace.py --workspace <workspace> --agent-name <agent_name> [--with-user] [--with-identity] [--with-soul]`
91 - if user provided custom text, apply it after script initialization (overwrite placeholders)
929. Ensure routing validity for current schema (no invalid allowFrom entries for groups).
9310. Post-provision verification:
94 - send a test message in group and ask user to send `ping`
95 - confirm agent responds without `@mention`
9611. Return completion summary with:
97 - agent name
98 - model
99 - workspace path
100 - group title
101 - chat_id
102 - no-mention reply mode (`enabled`/`disabled`)
103 - status and next step (if any)
104
105## Telegram Automation Rules
106
107- Group creation/deletion and member operations should use browser automation (user-account flow).
108- For browser flow, prefer Chrome relay profile for existing logged-in Telegram sessions.
109- If no connected Chrome tab is available, ask user to attach once, then continue.
110- If Telegram shows confirmation/captcha that cannot be automated, request one manual click, then resume.
111
112## OpenClaw Command Discovery
113
114Do not invent OpenClaw commands.
115
116When agent create/update command syntax is unknown:
1171. Run `openclaw help`.
1182. If needed, run `openclaw <subcommand> --help` for the relevant subcommand.
1193. Use only discovered command forms.
120
121## Idempotency
122
123- If `~/claw-<agent-name>` already exists, reuse it.
124- If a same-name group already exists, confirm whether to reuse or create a fresh one.
125- If agent already exists, update model/binding/workdir instead of duplicating.
126
127## Reliability Checks (must do)
128
129- Verify `requireMention=false` for the bound group.
130- Verify gateway config actually applied:
131 - check reload mode/status logs (`config hot reload applied`, `restarting telegram channel`)
132 - if reload is `off` or not applied, restart gateway and re-check logs.
133- Send one bot-originated test message to the new group, then require one live user `ping`.
134- Verify agent replies without `@mention`.
135- Do not claim success before `ping -> pong` verification passes.
136
137## Failure Handling
138
139If group creation succeeds but binding fails:
140- Keep created group.
141- Report exact failed step.
142- Provide one-command resume instruction for the next run.
143
144If chat_id cannot be resolved automatically:
145- Report that as a partial success.
146- Provide the shortest fallback step to fetch chat_id, then continue binding.
147
148## Output Template
149
150Return concise status:
151
152- `agent`: <agent-name>
153- `model`: <selected-model>
154- `workspace`: `~/claw-<agent-name>`
155- `telegram_group`: <title>
156- `chat_id`: <id or PENDING>
157- `binding`: <done|pending>
158- `reply_without_mention`: <enabled|disabled>
159- `initialized_files`: <USER.md, IDENTITY.md, SOUL.md or subset>
160- `verification`: <passed|failed>
161- `next_step`: <none or exact minimal action>