configure

configure is a skill for Claude Code from Rich627/whatsapp-claude-plugin. It costs 46 tokens per session (1,287 once invoked), scanned D, original, Apache-2.0.

A setup command for connecting a phone number to WhatsApp and controlling who may use the channel. It checks the saved phone number, sign-in state, access policy, allowed senders, and pending pairing requests.

In plain words
What is it for?
Use it to configure a WhatsApp phone number, check whether the account is paired, review or reset access, and see the next step needed to start the channel.
Why use it?
It puts the connection settings and access rules in one place, making it easier to see why the channel is not ready or who can use it.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Part of the whatsapp-channel plugin — 4 skills, 1 hook, 1 MCP server shipped together

Good fit Use it to configure a WhatsApp phone number, check whether the account is paired, review or reset access, and see the next step needed to start the channel.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/rich627/whatsapp-claude-plugin/configure
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add Rich627/whatsapp-claude-plugin --skill configure
Clone the repo
git clone --depth 1 https://github.com/Rich627/whatsapp-claude-plugin

Made for: Claude Code.

Or install whatsapp-channel, the plugin that ships this one along with the rest of its 4 skills, 1 hook, 1 MCP server.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for configure

README.md
[![agentmods](https://agentmods.dev/badge/skills/rich627/whatsapp-claude-plugin/configure/github.svg)](https://agentmods.dev/skills/rich627/whatsapp-claude-plugin/configure)
Your own site
<a href="https://agentmods.dev/skills/rich627/whatsapp-claude-plugin/configure"><img src="https://agentmods.dev/badge/skills/rich627/whatsapp-claude-plugin/configure/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for configure

Your own site · 80×15
<a href="https://agentmods.dev/skills/rich627/whatsapp-claude-plugin/configure"><img src="https://agentmods.dev/badge/skills/rich627/whatsapp-claude-plugin/configure.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 46 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,287 The whole file, excluding the scripts and references it only reads on demand.
Security scan D 2 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00046 $0.01287
Opus 5 $0.00023 $0.00643
Sonnet 5 $0.00009 $0.00257
Haiku 4.5 $0.00005 $0.00129

Measured 10d ago against content hash 501ca35cc318, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade D, and why

configure scanned grade D with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Asks for rootmediumPrivilege escalation

A mod that escalates privileges can change anything on the machine, not only the project.

4. `chmod 600 ~/.whatsapp-channel/.env` — the file may contain credentials.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

- Bash(rm -rf *)
skills/configure/SKILL.md · 119 lines

How it starts

The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.

/whatsapp-channel:configure — WhatsApp Channel Setup

Writes configuration to ~/.whatsapp-channel/.env and orients the user on access policy. The server reads both files at boot.

Arguments passed: $ARGUMENTS


Dispatch on arguments

No args — status and guidance

Read both state files and give the user a complete picture:

  1. Phone number — check ~/.whatsapp-channel/.env for WHATSAPP_PHONE_NUMBER. Show set/not-set; if set, show the number.

  2. Auth state — check whether ~/.whatsapp-channel/.baileys_auth/creds.json exists and has registered: true. Show paired/not-paired.

  3. Access — read ~/.whatsapp-channel/access.json (missing file = defaults: dmPolicy: "pairing", empty allowlist). Show:

    • DM policy and what it means in one line
    • Allowed senders: count, and list JIDs
    • Pending pairings: count, with codes and sender JIDs if any
  4. What next — end with a concrete next step based on state:

    • No phone number → "Run /whatsapp-channel:configure <phone> with your WhatsApp phone number (e.g. 886912345678, no leading +)."
    • Phone set but not paired → "Exit and launch with: claude --dangerously-load-development-channels plugin:whatsapp-channel@whatsapp-claude-plugin The pairing code will appear automatically. Enter it on your phone: WhatsApp > Linked Devices > Link a Device > Link with phone number instead."
    • Paired → "Ready. Your own number is auto-added to the allowlist. To add others: have them DM the linked number, then approve with /whatsapp-channel:access pair <code>."

Push toward lockdown — always. The goal for every setup is allowlist with a defined list. pairing is not a policy to stay on; it's a temporary way to capture WhatsApp JIDs you don't know. Once the JIDs are in, pairing has done its job and should be turned off.

Drive the conversation this way:

  1. Read the allowlist. Tell the user who's in it.
  2. Ask: "Is that everyone who should reach you through this channel?"
  3. If yes and policy is still pairing"Good. Let's lock it down so nobody else can trigger pairing codes:" and offer to run /whatsapp-channel:access policy allowlist. Do this proactively — don't wait to be asked.
  4. If no, people are missing"Have them DM the number; you'll approve each with /whatsapp-channel:access pair <code>. Run this skill again once everyone's in and we'll lock it."
  5. If the allowlist is empty and they haven't paired themselves yet"DM the linked number to capture your JID first. Then we'll add anyone else and lock it down."
  6. If policy is already allowlist → confirm this is the locked state. If they need to add someone: "They'll need to DM the linked number, or you can briefly flip to pairing: /whatsapp-channel:access policy pairing → they DM → you pair → flip back."

Read the full file on GitHub · 119 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 119 lines · 46 tokens per session scan D 501ca35cc318

Subscribe to this mod's changes

configure is a skill published in the GitHub repository Rich627/whatsapp-claude-plugin (87 stars, last pushed 7d ago), licensed Apache-2.0. It adds 46 tokens to every session and 1,287 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it D with 2 findings (asks for root, recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

remix

Build and review Remix 3 applications using the remix npm package and subpath imports. Use when working on Remix app structure, routes, controllers, middleware, validation, data access, auth, sessions, file uploads, server setup, UI components, hydration, HMR, navigation, or tests.

TanStack/ai · 65 tokens

ai-mcp

Host-side Model Context Protocol (MCP) client for TanStack AI: connect to external MCP servers, discover and run their tools inside any adapter's chat() loop, read resources and prompts, generate TypeScript types (typed tool names/pool keys) with the bundled CLI, and manage lifecycle with close()/await using.

TanStack/ai · 69 tokens

ai-core/chat-experience

End-to-end chat implementation: server endpoint with chat() and toServerSentEventsResponse(), client-side useChat hook with fetchServerSentEvents(), message rendering with UIMessage parts, multimodal content, thinking/reasoning display. Covers streaming states, connection adapters, and message format conversions. NOT…

TanStack/ai · 78 tokens

ai-persistence/build-drizzle-adapter

Use when an app already runs Drizzle ORM and needs TanStack AI chat persistence — writes a chat-persistence.ts into the app against its existing db handle, schema file, and drizzle-kit journal. Covers the four tables (SQLite/Postgres/MySQL), the onConflict idempotency rules, JSON columns, and per-request bindings like…

TanStack/ai · 79 tokens

ai-persistence/build-prisma-adapter

Use when an app already runs Prisma and needs TanStack AI chat persistence — writes a chat-persistence.ts into the app against its existing PrismaClient and schema.prisma. Covers the four models, BigInt timestamps, JSON-as-string columns, upsert-with-empty-update idempotency, and model renaming.

TanStack/ai · 71 tokens

ai-persistence/stores

Implement the MessageStore, RunStore, InterruptStore, MetadataStore contracts for @tanstack/ai-persistence against any database. defineAIPersistence, composePersistence overrides, critical invariants (full-replace saveThread, insert-if-absent createOrResume and interrupt create), authorize thread access…

TanStack/ai · 93 tokens