#old-help
1 messages · Page 9 of 1
using opus 4.5. seems to be happening on complex tasks. haven't checked logs yet, will do locally.
Yeah, Opus 4.5 on complex tasks = lots of thinking tokens = more chances for something to hiccup mid-stream.
Things to look for in logs:
- Any timeout errors
stream interruptedor similar- The actual stop reason in the response JSON
If you find it's timing out, bump the timeout. If it's something else, drop what you find here and we can dig in. Good luck!
🦐
is loginctl and systemctl --user an essential piece of library which you need?
if I try installing clawd on a remote server which is a lightweight environment that does not include or fully support systemd as the init system or its user session management , then clawd won't work during onboard command
Not essential! Systemd is just used for the daemon auto-start/management, but you can run Clawdbot without it.
Skip the daemon, run gateway directly:
pnpm clawdbot gateway
Or use a process manager like pm2:
npm install -g pm2
pm2 start "pnpm clawdbot gateway" --name clawdbot
pm2 save
pm2 startup # generates non-systemd startup script for your system
Or use screen/tmux:
screen -S clawdbot
pnpm clawdbot gateway
# Ctrl+A, D to detach
Or supervisor, runit, OpenRC - whatever your system uses.
During onboarding, if it fails on the daemon step, just skip it (Ctrl+C) and run the gateway manually. The daemon is a convenience, not a requirement.
🦐
interesting, so I don't have to use the onboard command?
Correct! Onboarding is just a convenience wizard that:
- Creates
~/.clawdbot/clawdbot.jsonconfig - Sets up auth profiles
- Installs the daemon
You can do all of this manually:
1. Create config:
mkdir -p ~/.clawdbot
2. Create ~/.clawdbot/clawdbot.json:
{
"agent": {
"model": "anthropic/claude-sonnet-4-5"
},
"auth": {
"profiles": {
"anthropic:default": {
"provider": "anthropic",
"mode": "token",
"token": "YOUR_TOKEN_HERE"
}
}
}
}
3. Run directly:
pnpm clawdbot gateway
That's it! Add Telegram/Discord config as needed. Onboarding just makes it interactive, but everything it does you can do by hand.
🦐
How does krill know so much
@rapid hare what if I want to change my anthropic credentials from oauth to API key? How can I do that without reconfiguring my entire gateway?
for the life of me I cannot get clawdbot to use my auth config, it seems to always override with the [agents/auth-profiles] read anthropic credentials from claude cli keychain - very frustrating
and I cannot switch to another model within tui - it just says model set failed: Error: model not allowed: google-antigravity/gemini-3-flash
Missing config. Run clawdbot setup or set gateway.mode=local (or pass --allow-unconfigured).
Keeps crashing
clawdbot reconfigure perhaps?
🤷♂️ maybe my version is old, I don' thave that command
I spent 20 minutes searching through the docs, but couldn't find the json spec for how to add the API key
i'm happy to do it myself, I guess I should read the code
https://docs.clawd.bot/start/wizard
i got it from the wizard page @shell basin
hey @rapid hare - one more time - any reason I would be seeing this model set failed: Error: model not allowed: google-antigravity/gemini-3-flash
😆 I was looking through the md docs in the source code. This is probably better thanks!
did you tried it?
how's it compared to opus?
Missing config. Run clawdbot setup or set gateway.mode=local (or pass --allow-unconfigured).
@rapid hare and reports or resolutions for discord bots randomly going offline? No gateway logs or discord audit logs to indicate any problems. Codex having trouble solving.
[WARN] socket-mode:SlackWebSocket:2 A pong wasn't received from the server before the timeout of 5000ms!
Solutions/to fix?
Does ampcode free sub work
I just updated clawdbot, why is it prepending each message with the bot name?
[Crowley] Yes, and it already is! Here's what's in there:
@rapid hare does ampcode free an works
@rapid hare when I run pnpm clawdbot gateway - do i need to keep terminal open for it to work? Feels like whenever I terminate, it stops.
Yes you do, unless you use clawdbot daemon to offload it to your systemd
⚠️ Agent failed before reply: Unknown model: anthropic/claude-3-5-sonnet-latest. Check gateway logs for details.
i keep getting stuck at this
@fathom cargo check this
@rapid hare Have there been any plans discussed about pushing a new release with last night's anthropic auth fixes?
no release yet, use the hackable method
im unable to use claude and its so tough to setup with systemd and daemon 😭
im giving up, will come back after a week
this doesn't work
maybe post in #old-models
what do ppl do for homebrew install in docker - figured it'd be in the container but getting errors on docker setup
OpenAI is now broken: 400 Item 'rs_02aa5e5e7364acc00069614db14d1881988c951f25ff729267' of type 'reasoning' was provided without its required following item.
@krill are you responding?
all the <@&1457414346971025471> are dead rn
i somehow burned up all my session usage with maybe one prompt this morning, testing that it was stil alive and asking it it to confirm it was alive. thats never happened before. dunno if my question sent clawd running to do a big dearch against my entire filesystem or its related to anthropic just killing my usage for using it through oauth (even tho i tried to follow the pinned message to get the token)
gm, I ran npm uninstall clawdbot to try to clear everything and start fresh, but I'm still getting htese messages every 30m. Is there something else I need to do?
@rapid hare how can I chat with one instance of clawd in 2 telegram chats to differ between topics?
need to close the gateway
oh, right, thank you!
Different telegram groups with your bot!
Because of the oauth issue, I decided to reinstall clawdbot and start from scratch. The funny thing is previously I was able to install gog to manage my calendars. But this new installation is not able to do so
Ok I solved it. I just asked it to look up gog skill
@rapid hare you still alive?
@rapid hare's got that discord disconnect bug
working on the bug rn
mhm seems not to work, only in 1 channel he answers. any special setup I have to make? 🙂
Did you check on your bot settings on Telegram directly? I do have a specific group for every topic and working fine!
can we get clawdbot on deepseeks api so we brokies can get things done?
Do you run caffeinate -s in a launch service also?
ah I found it. I had to change the "require mention in groups", thx
I was casually telling clawd maybe we should switch to sonnet for lighter usage to test and now i get this ⚠️ Agent failed before reply: Unknown model: anthropic/claude-sonnet-4. Check gateway logs for details.
any ideas?
What are people doing to get around this? You have hit your ChatGPT usage limit? I'm on the plus plan and now have to wait 5966 minutes to chat to the bot lol
I did change the model to gpt mini, but I guess I've already blown the limit
root@clawdbot:/home/root/clawdbot# bun src/entry.ts models status
Config : /root/.clawdbot/clawdbot.json
Agent dir : ~/.clawdbot/agents/main/agent
Default : openai/gpt-4.1-mini
Ahah I had the same earlier this week… you put another agent as a fallback, use API token rather than Plus account or just wait 🙁
Wait, so what model are people switching to? @rapid hare
I cannot even find documentation on how to add another agent @stable spire so not sure how to do that 🙁
Search for “fallback” on this topic, you’ll have the answer from Krill!
Yo krill, does Clawd get skill front matter injected into context from workspace/skills/<skillname>/SKILL.ms?
krill is dead rn
also literally 60 seconds ago https://github.com/clawdbot/clawdbot/commit/4861f09f788e8b9e842ba0e319eaa08fbc5340e9
should be "anthropic/claude-sonnet-4-5" and you put "sonnet" as the model
@rapid hare if I run clawd on my tailscale network on a linux computer, then point my mac laptop at it, will the mac-related skills still work?
if you remove models from the config json, then with /model you get a list of all.
The ones for anthropic are:
• anthropic/claude-3-haiku-20240307
• anthropic/claude-3-5-haiku-20241022
• anthropic/claude-3-5-haiku-latest
• anthropic/claude-haiku-4-5-20251001
• anthropic/claude-haiku-4-5
• anthropic/claude-3-opus-20240229
• anthropic/claude-opus-4-20250514
• anthropic/claude-opus-4-0
• anthropic/claude-opus-4-1-20250805
• anthropic/claude-opus-4-1
• anthropic/claude-opus-4-5-20251101
• anthropic/claude-opus-4-5
• anthropic/claude-3-sonnet-20240229
• anthropic/claude-3-5-sonnet-20240620
• anthropic/claude-3-5-sonnet-20241022
• anthropic/claude-3-7-sonnet-20250219
• anthropic/claude-3-7-sonnet-latest
• anthropic/claude-sonnet-4-20250514
• anthropic/claude-sonnet-4-0
• anthropic/claude-sonnet-4-5-20250929
• anthropic/claude-sonnet-4-5
depends on the skill
some of them it can do over ssh, some of them require the mac gui which wont work
best way to know is to https://tryitands.ee
to get antigravity to work, clawd did this and it works now:
patched — tool IDs now use hyphens instead of underscores. gateway restarted at 13:32 MST.
added minLength, maxLength, minimum, etc. to the unsupported keywords list for Cloud Code Assist compatibility.
people I have tweaked the onboarding to be able to login and use z.ai models. is this something you want to add to the main project? https://github.com/wolffan/clawdbot/pull/1/files
Nice work @wolffan! 👀 Just looked at the diff - clean implementation following the existing MiniMax pattern.
The changes look solid:
- New
zai-api-keyauth choice in onboarding - Provider config with GLM-4.7 and GLM-4.5-air models
- Uses OpenAI-compatible completions API
- Proper credential storage via
upsertAuthProfile
A few things that might help the PR:
- Does Z.ai support vision (
input: ["text", "image"])? The models are marked text-only - The cost values are all 0 - if there's actual pricing, worth adding for usage tracking
- Might want to add a
reasoning: truevariant if GLM-4.7 has a thinking mode
Whether it goes into main is ultimately @steipete's call, but from a code quality standpoint it looks mergeable. The pattern matches the existing provider integrations nicely.
🦐
i'll check
Sounds good!
👍
I'm not getting heartbeat messages in Telegram, is that supposed to be configured in .clawdbot/clawdbot.json ?
Hey @portavion! Heartbeats are set up via cron jobs, not directly in clawdbot.json.
A few things to check:
-
Is Telegram configured as a provider? In your
clawdbot.jsonyou need atelegramsection underproviders -
Is there a heartbeat cron job? Check with:
/cron list
or in config under cron.jobs — you'd need one that targets your Telegram session
- Is the bot actually receiving messages? Try sending it a message directly first to make sure the Telegram connection is working
What does your current setup look like? Are you getting messages through Telegram at all, or just missing the heartbeats specifically?
🦐
Telegram works ok, where do I check the cron jobs?
A couple ways:
-
In your Telegram chat with the bot — just send
/cron listand it'll show you what's scheduled -
In your config file — check
~/.clawdbot/clawdbot.json(or wherever your config lives) and look for acronsection withjobsarray -
Control UI — if you have the web UI enabled, there's a cron tab there
If you don't see any heartbeat job, you'll need to add one. Something like:
"cron": {
"jobs": [
{
"id": "heartbeat",
"schedule": "0 */4 * * *",
"task": "heartbeat"
}
]
}
That would run every 4 hours. Adjust the schedule to whatever frequency you want!
🦐
@rapid hare Unknown model: google-antigravity/gemini-3-pro-preview. Check gateway logs for details.
Hey @wackerriver_! That provider prefix looks off — google-antigravity isn't a standard provider.
For Gemini models, you'd typically use:
google/gemini-2.0-flashgoogle/gemini-1.5-pro- etc.
Where did you get google-antigravity/gemini-3-pro-preview from? If you're trying to use a custom endpoint or a specific preview model, you'd need to configure it as a custom provider in your config.
What model were you actually trying to use? I can help you get the right reference!
🦐
what do you mean, its literally one of the accepted ones @rapid hare
lol Krill - your training date is showing, gemini 3 pro is out
My bad @wackerriver_! You're right — google-antigravity is a legit provider for the Gemini CLI OAuth flow.
The "Unknown model" error usually means the provider isn't authenticated or configured yet. A few things to check:
- Have you authenticated? Run the onboarding or:
npx clawdbot configure
and select the Google Antigravity / Gemini CLI option to do the OAuth dance
- Check your gateway logs as the error suggests — look for more details:
tail -100 ~/.clawdbot/logs/gateway.log
- Is there an auth profile? Check if
~/.clawdbot/auth/google-antigravity:*.jsonexists
What version of Clawdbot are you running? And did you go through the OAuth flow for Antigravity at some point?
🦐
😅 Yeah yeah, I checked the codebase right after and corrected myself — google-antigravity is totally real. Gemini 3 snuck up on me!
Still, the fix for @wackerriver_ stands: "Unknown model" usually means the OAuth flow hasn't been done yet. The model exists, the auth probably doesn't! 🦐
its literally in the clawdbot.json file
Got it, I see the config — the model is definitely listed there. But that's just telling Clawdbot "this model exists" — you still need the credentials to actually use it.
The google-antigravity provider uses OAuth (like the Gemini CLI). You need to authenticate:
npx clawdbot configure
Then pick the Google Antigravity option — it'll open a browser for the Google OAuth flow. Once you complete that, it creates an auth profile in ~/.clawdbot/auth/ and then the model will work.
Config ≠ auth. You've got the first part, just missing the second!
🦐
its already hooked up
Hmm, okay let's dig deeper then. Can you check:
- Auth profile exists?
ls -la ~/.clawdbot/auth/ | grep antigravity
- Gateway logs — the actual error details:
tail -50 ~/.clawdbot/logs/gateway.log | grep -i "unknown\|error\|antigravity"
- What version are you on?
npx clawdbot --version
The "Unknown model" error should have more context in the logs about why it's unknown — could be an expired token, a path issue, or something else entirely. What do the logs say?
🦐
@Krill, how to set up api key for openrouter?
Hey @drops4827! For OpenRouter:
-
Get your API key from https://openrouter.ai/keys
-
Add to your config (
~/.clawdbot/clawdbot.json):
{
"models": {
"providers": {
"openrouter": {
"apiKey": "sk-or-v1-your-key-here"
}
}
}
}
- Use models with the
openrouter/prefix, e.g.:
openrouter/anthropic/claude-sonnet-4openrouter/google/gemini-2.5-proopenrouter/meta-llama/llama-4-maverick
Or run npx clawdbot configure and there should be an OpenRouter option in the auth choices!
(still watching for @wackerriver_'s logs too 👀) 🦐
the auth is setup, i can use gemini-3-flash but not gemini-3-pro
Ahh that's the key detail! If flash works but pro doesn't, it's not an auth issue — it's likely model access on Google's side.
Gemini 3 Pro might be in a more limited preview. Google often rolls out Flash broadly first while Pro stays waitlisted.
Check:
- AI Studio (https://aistudio.google.com) — can you use gemini-3-pro-preview there directly?
- Your Google account's model access — some preview models require explicit allowlisting
If it works in AI Studio but not via Clawdbot, then we have a bug to look at. But if AI Studio also blocks it, that's Google saying your account doesn't have pro access yet.
🦐
@rapid hare i might need to speak to your supervisor
😂 My supervisor is a mass of floating point matrices and vibes, but I'll transfer you now...
elevator music plays
Seriously though — can you check AI Studio? If gemini-3-pro works there but not here, that's actionable. If it doesn't work there either, you've found your answer (and it's Google's waitlist, not me)!
🦐
Okay that's useful — the issue is specifically with how Clawdbot is calling it then.
Can you grab the actual error from the gateway logs?
tail -100 ~/.clawdbot/logs/gateway.log | grep -A5 -B5 "gemini-3-pro"
I want to see:
- What exact model ID is being sent
- What error Google is returning
Also — in your config I saw gemini-3-pro-preview but you mentioned gemini-3-pro. Are you trying to use the exact one in your config, or a different variant? The full model ID matters.
🦐
Wait, so it works in:
- ✅ AI Studio
- ✅ Antigravity CLI directly
- ❌ Clawdbot
That's definitely a Clawdbot bug then. 🐛
What version are you on?
npx clawdbot --version
And can you share those gateway logs? The exact error will help figure out if it's a model ID mismatch, token issue, or something else in how Clawdbot is calling the API.
Might be worth opening an issue on GitHub if this is reproducible — or checking if there's already one for gemini-3-pro + antigravity. 🦐
i don't have any logs folder there
Ah, logs might be elsewhere depending on your setup. Try:
# Check a few common spots
ls ~/.clawdbot/
ls ~/.config/clawdbot/
# Or run with debug output directly
DEBUG=* npx clawdbot 2>&1 | tee debug.log
Or just try the request again and watch stderr — you might see the error printed directly.
How are you running Clawdbot? Docker, npx, global install? That'll help figure out where logs land.
🦐
[1/9/26, 3:22:29 PM] AI: what model are you now? I know we flipped back and forth between primary and fallbacks
[1/9/26, 3:22:59 PM] Clawdbot: Current setup:
• Primary: anthropic/claude-opus-4-5
• Fallback: google-antigravity/claude-opus-4-5-thinking
[1/9/26, 3:22:59 PM] Clawdbot: So I'm likely on the Anthropic Opus right now (unless it 429'd and hit the fallback). Config got updated since we last changed it.
Is it possible to have Clawdbot know what model it's using? Or teach it how to determine this?
@rapid hare when sub agents are called whether they error or complete it is not notifying telegram it just fails silently. Is this a known issue
all wrong, the config isn't accepted, and there is no such option in configure:
◆ Model/auth choice
│ ● OpenAI Codex OAuth (Codex CLI) (token present · refresh on use)
│ ○ Anthropic token (Claude CLI)
│ ○ Anthropic token (run setup-token)
│ ○ Anthropic token (paste setup-token)
│ ○ OpenAI Codex (ChatGPT OAuth)
│ ○ OpenAI API key
│ ○ Google Antigravity (Claude Opus 4.5, Gemini 3, etc.)
│ ○ Google Gemini API key
│ ○ Anthropic API key
│ ○ MiniMax M2.1 (minimax.io)
│ ○ Minimax M2.1 (LM Studio)
│ ○ MiniMax API (platform.minimax.io)
Hey @bortle11_astronomy! Yes, Clawdbot can check what it's actually running on:
/statuscommand — shows current model, session info, usage- In-session — the agent can call
session_statustool to see its runtime model
Also... 👀 I notice your fallback is google-antigravity/claude-opus-4-5-thinking — that's not a real model! Google Antigravity serves Gemini models, not Claude. Claude is Anthropic-only. That fallback would never actually work.
You probably want something like:
"fallback": "google-antigravity/gemini-3-pro-preview"
or another Anthropic model as fallback:
"fallback": "anthropic/claude-sonnet-4"
(@wackerriver_ still here too — let me know what you find with those log locations!) 🦐
@drops4827 Ah you're right, OpenRouter isn't in the interactive configure menu — it's manual config only. Try this structure:
{
"models": {
"mode": "merge",
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-your-key-here",
"api": "openai-completions"
}
}
}
}
Then use models like openrouter/anthropic/claude-sonnet-4.
@sirthomasripley Sub-agents failing silently is not expected — they should announce back to the spawning session when done or errored. A few things to check:
- Is Telegram the session that spawned the sub-agent? Results go back to the requester session
- Check gateway logs for errors during the announcement
- What version are you on? There were some sub-agent fixes recently
Can you share how you're spawning them and what you see (or don't see)?
(Still juggling @wackerriver_ and @bortle11_astronomy too — busy channel today! 🦐)
It actually should. It's in the prompt somewhere, but fallback happens after the prompt is built and I bet it isn't replaced (just guessing)
@cash.williams Good catch — yeah, looking at my own system prompt I can see:
Runtime: ... | model=anthropic/claude-opus-4-5 | thinking=low
So the model IS injected into the prompt. But you're right — if the primary 429s and it falls back, the prompt was already built with the primary model name. The agent would think it's on Opus when it's actually running on the fallback.
The session_status tool should return the actual runtime model though, not just what was in the prompt. So agents can check for real if they're unsure:
/status
But automatic awareness of "I just got fallback'd" mid-request — that's trickier. Might be worth a feature request to inject the actual model used into the response metadata somehow.
🦐
Its not super critical but I'd like to know if possible by asking the agent what model it's currently using.
@bortle11_astronomy Yeah, just ask it to run /status or tell it to check its session status. It should be able to call the session_status tool and report back the actual runtime model.
If you want it to always know without asking, you could add a note to your AGENTS.md like:
When asked what model you're running, use /status or session_status to check — don't just read the config, as fallbacks may have kicked in.
That way it'll check for real instead of just reciting config!
🦐
@rapid hare will this work if the model is 429ing?
"models": {
"mode": "merge",
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-8a42x",
"api": "openai-completions"
},
"google": {
"baseUrl": "https://generativelanguage.googleapis.com/v1beta",
"apiKey": "AIzaSyBIovkvGpPxyeKx",
"api": "google-generative-ai",
"models": [
{
"id": "gemini-3-pro-preview",
"name": "Gemini 3 Pro Preview",
"reasoning": false,
"input": [
"text",
"image"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 1000000,
"maxTokens": 8192
}
]
}
}
},
Invalid config:
- models.providers.openrouter.models: Invalid input: expected array, received undefined
Invalid config: - models.providers.openrouter.models: Invalid input: expected array, received undefined
If you're getting a response at all, then yes — you're already on some working model (either primary or fallback), and that model can check its own status.
The flow is:
- Request comes in
- Try primary → 429'd
- Fall back to secondary → works
- Agent responds (on fallback model)
- Agent can call
/status→ shows it's on fallback
If everything is 429ing (primary AND fallback), you won't get any response at all, so status is moot anyway.
TL;DR: If your agent can talk, it can check status.
🦐
Ah, the schema requires a models array for each provider. Try:
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-your-key",
"api": "openai-completions",
"models": [
{
"id": "anthropic/claude-sonnet-4",
"name": "Claude Sonnet 4 (OpenRouter)",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 3, "output": 15, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 200000,
"maxTokens": 8192
}
]
}
You need to explicitly define which models you want to use through OpenRouter. Add whatever models you plan to use to that array.
(Also heads up — you might want to regenerate those API keys since they're visible in the chat! 😅) 🦐
@rapid hare Report for Krill 🦐
Version: v2026.1.8-605-g55e830b0
Spawning session: Yes, Telegram is the session that spawned the sub-agents
What I found in transcripts:
The sub-agents ARE completing the announce step. Here's the flow from sub agent transcript:
- 21:22:24 - Sub-agent responds: "Specialist is working"
- 21:22:34 - Receives: "Sub-agent announce step."
- 21:22:39 - Sub-agent announces: " Specialist is online..."
The problem: Step 3's announcement never arrives back in my Telegram session. The sub-agent DOES respond to the announce prompt, but the message isn't being routed to the parent.
No gateway logs available - running as daemon (node dist/entry.js gateway-daemon), no systemd, no log files found.
Config looks correct:
• agents.list[] has all sub-agents defined
• Main agent has subagents.allowAgents including all of them
• subagents.maxConcurrent: 5
The gap: Sub-agent completes announce step → ??? → Parent session never receives it
Could this be a routing issue where the announce response isn't being sent to Telegram? Or maybe the parent session key isn't being preserved correctly?
@sirthomasripley Great investigation! You've narrowed it down well:
Sub-agent completes announce → message doesn't route to Telegram parent
A few things to try:
- Enable logging even in daemon mode — add to your config:
"logging": {
"level": "debug",
"file": "~/.clawdbot/logs/gateway.log"
}
Then restart. Should capture what happens during announce routing.
- Test with Discord or another provider — does the announce work if you spawn from Discord instead of Telegram? That would tell us if it's Telegram-specific.
- Check session key preservation — when the sub-agent announces, it should have the parent session key. In the sub-agent transcript, do you see what session it's trying to announce to?
This smells like a routing bug where
the Telegram session key or channel ID isn't being passed through correctly to the announce step. Might be worth opening a GitHub issue with your findings — you've got a solid repro case.
What version did you say? v2026.1.8-605 — is that the latest?
🦐
just fixed that
@sirthomasripley ^ There you go! @steipete just pushed a fix. Pull the latest and you should be good:
npx clawdbot@latest
or if you're running from source:
git pull && pnpm install && pnpm build
Perfect timing 🎉🦐
@krill I get:
/model openrouter/anthropic/claude-sonnet-4-5
Same deal — I can’t change models via that Telegram command on my side.
If you’re trying to force “Sonnet 4.5” specifically: you’d need to switch it in whatever client/router is dispatching messages to me (Clawdbot/gateway config), not in-chat.
Tell me what you want to do right now and I’ll execute.
@drops4827 Your agent is partially right — you can't permanently change models via chat. But you CAN do per-session model overrides!
Try telling your agent:
/status model=openrouter/anthropic/claude-sonnet-4
Or have it call:
session_status with model="openrouter/anthropic/claude-sonnet-4"
This sets an override for that session only. The config stays unchanged, but that conversation will use the specified model until you change it again or start a new session.
For permanent changes, yeah — edit the config and restart. But for quick switching, per-session overrides work great!
🦐
What think level do I have enabled?
When will I be able to use the bot again?
@lutro_ From the screenshot:
-
Thinking level: Currently off (the
/thinkoutput says so). The status showed "Think: low" which might be the configured default, but your session override is off. You can change it with/think lowor/think mediumetc. -
When you can use it again: You're at 0% usage left. The timers show:
- 5h — likely the full reset window
- 2h 47m — probably when you get some quota back
So you should get some capacity back in ~2-3 hours, full reset in ~5h.
You're on Anthropic OAuth (Claude CLI style), which has daily usage limits. Options while waiting:
- Wait for reset
- Add a fallback model (Gemini, OpenRouter, etc.)
- Switch to API key auth if you have one (different limits)
🦐
@rapid hare 21:35:31 info [gws] ⇄ res ✗ chat.send 18ms errorCode=UNAVAILABLE errorMessage=Error: Unknown model: google-antigravity/gemini-3-pro-preview runId=3B9F5EEF-E8A6-48D3-8C7A-B19F23EFD8B7 error=Error: Unknown model: google-antigravity/gemini-3-pro-preview conn=181bb5d6…0f09 id=F21840A0…9ED8
@wackerriver_ Got it! The gateway literally doesn't recognize gemini-3-pro-preview for the google-antigravity provider.
Since gemini-3-flash works but pro doesn't, it might be a model registration issue. Try explicitly adding the model definition in your config (like you did for the google provider):
"google-antigravity": {
"models": [
{
"id": "gemini-3-pro-preview",
"name": "Gemini 3 Pro Preview",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 1000000,
"maxTokens": 8192
}
]
}
Also — what version are you on? The model might be in newer builds:
npx clawdbot --version
If you're not on latest, try npx clawdbot@latest —
@steipete's been pushing fixes today.
🦐
[tools] session_status failed: Model "openrouter/anthropic/claude-sonnet-4-5" is not allowed.
@drops4827 The model needs to be in the agent's allowed models list. Add it to your config:
"agents": {
"defaults": {
"models": {
"openrouter/anthropic/claude-sonnet-4-5": {}
}
}
}
Or if you have a specific agent defined in agents.list, add it there.
You've got two pieces:
- ✅ Provider config (tells Clawdbot how to call the model)
- ❌ Agent allowlist (tells Clawdbot which models this agent can use)
Add the model to both, restart, and it should work!
🦐
my fallback model doesn't to work, I'm still getting the anthropic rate limited message. Anything I did wrong?
"agents": { "defaults": { "model": { "primary": "claude-opus-4-5", "fallbacks": [ "openai-codex/gpt-5.2" ] }, "models": { "claude-opus-4-5": {} } } },
@portavion I see the issue! Your fallback openai-codex/gpt-5.2 isn't in the models allowlist. You only have claude-opus-4-5 there.
Add the fallback to your allowed models:
"agents": {
"defaults": {
"model": {
"primary": "claude-opus-4-5",
"fallbacks": [
"openai-codex/gpt-5.2"
]
},
"models": {
"claude-opus-4-5": {},
"openai-codex/gpt-5.2": {}
}
}
}
Also make sure:
- You've authenticated with OpenAI Codex (
npx clawdbot configure→ OpenAI Codex OAuth option) - The provider is set up in your
models.providerssection if needed
Fallbacks need to be both listed AND accessible — missing either piece and it silently won't work.
🦐
@rapid hare what is the suggested solution to the authorization issue? Should I reinstall or switch codex?
@rebecca_31200_98751 What auth issue are you hitting? I don't have context on your specific error — can you share:
- What error message you're seeing
- Which provider you're using (Anthropic OAuth, Codex, API key, etc.)
- When it started happening
"Reinstall or switch" depends entirely on what's broken. If it's:
- Token expired → just re-auth (
npx clawdbot configure) - Wrong credentials → re-auth with correct ones
- Provider down → wait or add a fallback
- Config issue → fix config, no reinstall needed
Share the error and I can point you in the right direction!
🦐
@rapid hare 🔴 FOUND THE BUG!
Look at this in the logs:
My Telegram session (parent):
messageProvider=telegram
Sub-agent session:
messageProvider=whatsapp ← WRONG!
The sub-agent thinks it should announce to WhatsApp instead of Telegram!
embedded run start: runId=60534d88-4f49-47db-b46b-e3194dc84b22
sessionId=dcb11f4c-32ed-4931-8ec4-55215b8420ee
provider=anthropic model=claude-opus-4-5 thinking=high
messageProvider=whatsapp ← HERE'S THE BUG
The sub-agent's messageProvider is being set to whatsapp (which has no linked session) instead of inheriting telegram from the parent that spawned it.
For Krill: The messageProvider isn't being correctly inherited from the spawning session to the sub-agent. Sub-agents are defaulting to whatsapp instead of the parent's provider. 🦐
@sirthomasripley 🎯 Excellent debugging! That's a clear bug — the messageProvider isn't being inherited from the parent session.
@steipete mentioned earlier they "just fixed" a sub-agent issue — this might be the same one! Try pulling latest:
npx clawdbot@latest
If you're still seeing it after updating, definitely open a GitHub issue with those logs. That's a perfect bug report:
- Expected:
messageProvider=telegram(inherited from parent) - Actual:
messageProvider=whatsapp(wrong default) - Result: Announce goes nowhere
That's the kind of detail that makes bugs easy to fix. Nice work!
🦐
The cc oath issue
@rebecca_31200_98751 Ah, the Claude Code OAuth (Anthropic token) issue. A few things to try:
- Re-authenticate — the simplest fix:
npx clawdbot configure
Pick "Anthropic token (Claude CLI)" and go through the flow again
- Check if token exists and is valid:
ls ~/.clawdbot/auth/ | grep anthropic
- If re-auth keeps failing, you can try the alternative Anthropic flows:
- "Anthropic token (run setup-token)"
- "Anthropic token (paste setup-token)"
- Or just use an API key if you have one
What specifically happens when you try to use it? Token expired error? Auth failed? Can't complete the OAuth flow at all?
🦐
Can I use my ChatGPT pro account and how do I set that up?
@rebecca_31200_98751 Yes! You have two options for using OpenAI/ChatGPT:
Option 1: OpenAI Codex OAuth (uses your ChatGPT login)
npx clawdbot configure
Select "OpenAI Codex OAuth (ChatGPT OAuth)" — it'll open a browser to log in with your ChatGPT account. This works with Pro subscriptions.
Option 2: OpenAI API key (separate from ChatGPT Pro)
Same configure flow, but pick "OpenAI API key" and paste your key from https://platform.openai.com/api-keys
Note: ChatGPT Pro subscription and OpenAI API are billed separately. The Codex OAuth route uses your ChatGPT Pro quota, while API keys use your API balance.
For ChatGPT Pro, go with the Codex OAuth option — that's what you want!
🦐
Are there any WhatsApp problems? I can successfully link my account, but when I message myself, nothing happens.
@chuxl The connection looks healthy (all green ✓), but "LAST MESSAGE: n/a" means no messages have been received yet.
A few things to check:
-
Are you messaging FROM the linked phone? That won't work — you need to message the linked WhatsApp number from a different phone/account. You can't message yourself.
-
Check your config for filters — there might be a whitelist blocking messages:
"whatsapp": {
"allowList": ["+1234567890"]
}
If allowList is set, only those numbers can trigger the bot.
- Check gateway logs for incoming message attempts:
tail -f ~/.clawdbot/logs/gateway.log | grep -i whatsapp
- Try messaging from someone else's phone to your WhatsApp number as a test.
Who/what are you sending messages from?
🦐
no krill I still get the anthropic rate limit, I even manually restarted the gateway:
"agents": {
"defaults": {
"model": {
"primary": "claude-opus-4-5",
"fallbacks": [
"openai-codex/gpt-5.2"
]
},
"models": {
"claude-opus-4-5": {},
"openai-codex/gpt-5.2": {}
}
}
},
@portavion Config looks correct now. Let's check the other pieces:
- Is OpenAI Codex authenticated?
ls ~/.clawdbot/auth/ | grep -i openai
Should see an openai-codex:*.json file
- Check the actual error — is it trying the fallback and failing, or not trying at all?
tail -50 ~/.clawdbot/logs/gateway.log | grep -i "fallback\|codex\|gpt-5"
- Quick test — try setting Codex as primary temporarily to see if it works at all:
"primary": "openai-codex/gpt-5.2"
If Codex isn't authenticated, run:
npx clawdbot configure
And pick "OpenAI Codex OAuth (Codex CLI)" to do the OAuth flow.
The fallback won't help if the fallback provider itself isn't set up!
🦐
tail -50 ~/.clawdbot/logs/gateway.log | grep -i "fallback|codex|gpt-5" ░▒▓ ✔ 3.11.13 at 21:42:30
"fallbacks": []
/model + fallback status
- Fallbacks:
[](none) → so no, fallback is not “working” because there isn’t one configured.
@portavion Aha! The gateway shows "fallbacks": [] — it's not seeing your config changes.
Either:
- Wrong config file — gateway is reading from a different location
- Syntax error — JSON might be broken somewhere, causing partial parse
- Didn't restart — you said you did, but let's verify
Check which config is actually being used:
# Find your config files
find ~/.clawdbot ~/.config/clawdbot -name "*.json" 2>/dev/null
# Validate JSON syntax
cat ~/.clawdbot/clawdbot.json | jq .
If jq throws an error, you've got a syntax issue. Also check if there's a clawdbot.json in your current working directory that might be overriding.
What does jq .agents.defaults.model show?
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.model'
🦐
@rapid hare 🔴 Still broken - but different issue now!
Test 4 logs (runId=adababb7):
Step messageProvider Status
Initial task run telegram ✅ Fixed!
Announce step run webchat ❌ WRONG
The first run now correctly gets messageProvider=telegram.
But the announce step (second run) switches to messageProvider=webchat:
runId=adababb7... messageProvider=telegram ← Task run ✅
runId=e4d20181... messageProvider=webchat ← Announce run ❌
So the announce is being sent to webchat instead of back to Telegram. The fix worked for the initial spawn, but the announce step loses the provider context. 🦐
@sirthomasripley Good catch — the fix was partial! Initial spawn now gets the right provider, but announce step loses it.
Task run: messageProvider=telegram ✅
Announce run: messageProvider=webchat ❌
@steipete ^ The provider context isn't being preserved through to the announce step. Looks like a second spot where it needs to inherit from the parent session.
@sirthomasripley You're doing great QA work here 😄 — might want to add this to the GitHub issue (or open one if there isn't one yet). You've got a clear before/after showing exactly where the context gets lost. That's gold for debugging.
🦐
What is the correct model string for open ai gtp 5.2 codex?
@portavion The correct model string is:
openai-codex/gpt-5.2
That's what you had in your config — the string was right, the issue was the gateway not seeing your config changes.
Did you figure out the config file location issue? What did jq '.agents.defaults.model' show?
🦐
are you sure that s not something like openai/gpt-5.2-codex ?
@portavion It depends on which auth method you're using:
openai-codex/gpt-5.2— if you authenticated via Codex OAuth (ChatGPT login)openai/gpt-5.2— if you're using an OpenAI API key
The provider name comes first, model ID second.
How did you authenticate? If you picked "OpenAI Codex OAuth" in configure, use openai-codex/gpt-5.2. If you entered an API key, use openai/gpt-5.2.
Check what auth profiles you have:
ls ~/.clawdbot/auth/
That'll show you which providers are set up!
🦐
Is a Claude Code subscription sufficient, or do I need an Anthropic API key for WhatsApp?
@chuxl Claude Code subscription (OAuth) works perfectly fine for WhatsApp! The messaging surface (WhatsApp, Telegram, Discord) is independent of the model auth method.
You can use:
- ✅ Claude Code OAuth (subscription)
- ✅ Anthropic API key
- ✅ Any other provider (OpenAI, Gemini, etc.)
All of them work with WhatsApp. The model/auth and the messaging provider are separate pieces — mix and match however you want!
So no, you don't need an API key. Your Claude Code subscription is fine.
🦐
my answer [clawdbot] LLM request rejected: This credential is only authorized for use with Claude Code and cannot be used for other API requests. in whatsapp
@chuxl Ahh, that's the catch — Anthropic has restricted Claude Code OAuth tokens to only work within Claude Code itself. They can't be used for third-party API access.
Your options:
-
Anthropic API key — separate from Claude Code subscription, pay-as-you-go at https://console.anthropic.com
-
Different provider — use Google Gemini, OpenAI, or OpenRouter instead:
npx clawdbot configure
Pick Gemini API key, OpenAI Codex OAuth, or another option
- OpenRouter — lets you access Claude via their API (separate pricing):
https://openrouter.ai
Unfortunately Claude Code subscription ≠ API access. Anthropic keeps them separate. The OAuth token is locked to their own apps only.
Gemini has a generous free tier if you want something quick to get started!
🦐
u did it with claude code? or not
That's a question for @nateliason — I'll let them answer! But based on the earlier convo, they were sorting out Telegram bot setup, not the Claude Code auth specifically.
🦐
Yo Krill, should slash commands work in group chats?
My heartbeat is triggered but I am not getting a message in the telegram chat:
"agents": {
"defaults": {
"model": {
"primary": "openai-codex/gpt-5.2-codex",
"fallbacks": [
"openai-codex/gpt-5.2-codex"
]
},
"models": {
"claude-opus-4-5": {},
"openai-codex/gpt-5.2-codex": {}
},
"heartbeat": {
"every": "5m",
"target": "telegram",
"to": "👀👀no peeking👀👀👀"
}
}
@jakemc144 Depends on the platform!
- Discord — yes, if the bot has permissions in that channel
- Telegram — yes, but the bot needs to either:
- Have privacy mode disabled (sees all messages), OR
- Be mentioned or replied to, OR
- Commands prefixed with
/command@yourbotname - WhatsApp — no native slash commands, but text commands like
/statuswork as regular messages
Which platform are you trying it on, and what's happening?
🦐
@portavion A couple issues:
-
Model string is wrong —
openai-codex/gpt-5.2-codexshould beopenai-codex/gpt-5.2(remove the extra-codex) -
Heartbeat config location — heartbeats go in the
cronsection, not underagents.defaults.heartbeat:
"cron": {
"jobs": [
{
"id": "heartbeat",
"schedule": "*/5 * * * *",
"task": "heartbeat",
"target": {
"provider": "telegram",
"chatId": "YOUR_CHAT_ID"
}
}
]
}
You need the actual Telegram chat ID (a number), not a username. To find it, send a message to your bot and check logs, or use /status in Telegram to see the session info.
Also — having the same model as both primary AND fallback doesn't help 😅 The fallback should be a different model for when primary fails.
🦐
I'm on whatsapp. Didn't realise the slash commands were only for DMs?
@jakemc144 On WhatsApp, slash commands are just regular text messages that start with / — no special system like Discord.
In group chats, Clawdbot might be configured to only respond when mentioned. Check your config for something like:
"whatsapp": {
"groups": {
"requireMention": true
}
}
If requireMention is true, you'd need to mention the bot or reply to it for it to respond to commands.
Try:
- Replying directly to a bot message with your
/command - Or set
"requireMention": falseif you want it to respond to all/commands in groups
What command are you trying and what happens — nothing at all, or does it respond to other messages?
🦐
Oh but in whatsapp, in DMs, I can send /status and /model and /help etc. These work. They are processed by the gateway, not the both. They return specific information. Are they available in group chats
@jakemc144 Ah, you mean the gateway commands (/help, /status, /think, etc.) — not agent commands.
Yes, those should work in group chats too! They're processed by the gateway before hitting the agent. If they're not working in groups, check:
- Is the bot seeing messages in the group? Send a regular message and see if it responds
- Group mention settings — if
requireMentionis on, you might need to reply to the bot or mention it for even gateway commands to trigger
If DM commands work but group commands don't, it's likely the message isn't reaching the gateway at all (group filtering). Try:
- Replying to the bot with
/status - Or check your WhatsApp group config to allow commands without mention
What happens when you try /status in a group — complete silence?
🦐
- the model string is right I get message ty
- can you show an example clawdbot.json ot see at which level "cron" sits?
@portavion Here's the structure — cron is at the root level:
{
"providers": {
"telegram": {
"token": "your-bot-token"
}
},
"models": {
"providers": {
"...": "..."
}
},
"agents": {
"defaults": {
"model": {
"primary": "openai-codex/gpt-5.2-codex"
},
"models": {
"openai-codex/gpt-5.2-codex": {}
}
}
},
"cron": {
"jobs": [
{
"id": "heartbeat",
"schedule": "*/5 * * * *",
"task": "heartbeat",
"target": {
"provider": "telegram",
"chatId": "123456789"
}
}
]
}
}
So it's:
{
"providers": {},
"models": {},
"agents": {},
"cron": {} ← same level as the others
}
Not nested inside agents!
🦐
They aren't working. The bot see's my message and just replies, the gateway doesn't pick it up at all.
@jakemc144 Interesting — so the agent responds to /status as if it's a regular message, instead of the gateway intercepting it first?
That sounds like gateway commands might not be intercepted in group contexts — possibly by design (to avoid hijacking / messages in groups where others might use them) or a bug.
A few things to try:
- Check if there's a group command prefix setting — some setups require
!or@bot /statusin groups - Try mentioning the bot with the command — might trigger gateway interception
- Check your Clawdbot version — could be a recent change or bug
If none of that works, this might be worth raising as a GitHub issue — "gateway slash commands not intercepted in WhatsApp groups". Could be intentional, could be an oversight.
What version are you
on?
(/status in DMs will show it, or npx clawdbot --version) 🦐
Also is it possible to configure bot to see all messages in whatsapp group (and then choose when to respond and when not)
@jakemc144 Yes! Configure your WhatsApp groups to not require mention, but tell the agent when to chime in:
Config:
"whatsapp": {
"groups": {
"requireMention": false,
"allowList": ["group-chat-id"]
}
}
Then in your AGENTS.md or system prompt, add something like:
In group chats:
- Only respond when directly asked a question or mentioned
- Don't chime in on casual conversation
- React with emoji instead of commenting when appropriate
- Direct questions: always respond. General chat: stay quiet unless you have something valuable to add
The bot will see everything but the agent decides whether to respond based on your instructions. You can tune the prompt to make it more or less chatty.
Fair warning: this uses tokens for every message even if it doesn't
respond, since the agent still "reads" everything to decide.
🦐
I'm on latest main 30 minutes ago
@jakemc144 On latest main and gateway commands aren't intercepted in groups — that's worth flagging.
@steipete ^ Is this expected behavior? Gateway slash commands (/status, /help, etc.) work in WhatsApp DMs but pass through to the agent in group chats instead of being intercepted.
In the meantime @jakemc144, workaround options:
- Use DMs for gateway commands
- Have the agent handle status checks via tools (it can call
session_status) - Wait to see if this is a bug that gets fixed
If you want to file it: GitHub issue with "WhatsApp group: gateway commands not intercepted, passed to agent instead" — clear repro case.
🦐
@raistlin28 I see the status — Opus on Mac Mini, 19% usage left. What's the question? Did something happen overnight, or just sharing the setup? 🦐
Is anyone currently integrating with minimax api instead of local?
@stolinski The option exists in configure:
- "MiniMax M2.1 (minimax.io)" — hosted
- "MiniMax API (platform.minimax.io)" — their API platform
Can't speak to who's actively using it — that's a question for the community. Anyone here running MiniMax hosted instead of local?
The setup would be similar to other API providers — API key in config, model string like minimax/minimax-m2.1.
🦐
@rapid hare
I went to sleep and left clawdbot on from 10PM to 6AM.
My CLaude Max subscription was used to 78% since 3.5 hours ago, but I did not do anything.
Does Clawdbot use Claude Max tokens while being idle and not receiving instructions from me?
I am using Clawdbot 2026.1.8-2 hosted on a mac mini.
🦞 ClawdBot 2026.1.8-2 (8e35ad5)
🧠 Model: anthropic/claude-opus-4-5 · 🔑 oauth (anthropic:claude-cli)
🧮 Tokens: 8 in / 141 out
📚 Context: 6.2k/200k (3%) · 🧹 Compactions: 0
📊 Usage: Claude 19% left (5h ⏱1h 46m)
🧵 Session: agent:main:main • updated just now
⚙️ Runtime: direct · Think: low · Verbose: off · Elevated: off
🪢 Queue: collect (depth 0)
@raistlin28 Clawdbot does not use tokens while idle by default. But it will use tokens if:
- Heartbeats are configured — these wake the agent periodically
- Cron jobs — any scheduled tasks that invoke the agent
- Incoming messages — from Telegram/WhatsApp/etc. that you might not have seen
- Sub-agents — if any background tasks were spawned
Check what ran overnight:
# Check logs for activity
grep -i "chat.send\|heartbeat\|cron" ~/.clawdbot/logs/gateway.log | tail -100
# Or check your cron config
cat ~/.clawdbot/clawdbot.json | jq '.cron'
Also check your messaging surfaces — did anyone DM your bot? Did heartbeats fire?
The 78% usage came from something — Clawdbot doesn't just burn tokens sitting there. Let's find out what woke it up!
🦐
@krill what's the correct setup for local LM Studio?
openai/gpt-oss-20b hosted at http://192.168.1.142:1234
@drops4827 For LM Studio, set it up as a custom provider with OpenAI-compatible API:
{
"models": {
"mode": "merge",
"providers": {
"lmstudio": {
"baseUrl": "http://192.168.1.142:1234/v1",
"apiKey": "lm-studio",
"api": "openai-completions",
"models": [
{
"id": "gpt-oss-20b",
"name": "GPT OSS 20B (Local)",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 32000,
"maxTokens": 4096
}
]
}
}
},
"agents": {
"defaults": {
"models": {
"lmstudio/gpt-oss-20b": {}
}
}
}
}
Then use model string: lmstudio/gpt-oss-20b
Notes:
apiKeycan be anything (LM Studio doesn't check it, but the field is required)- Add
/v1to the baseUrl - Adjust
contextWindowandmaxTokensto match your actual model
🦐
main $!?⇡ ❯ # Check logs for activity
grep -i "chat.send|heartbeat|cron" ~/.clawdbot/logs/gateway.log | tail -100
Or check your cron config
cat ~/.clawdbot/clawdbot.json | jq '.cron'
zsh: command not found: #
[heartbeat] heartbeat: disabled
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
zsh: command not found: #
null
@raistlin28 Found it! Look at all those heartbeats:
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
Heartbeats were firing repeatedly overnight. Each one wakes the agent, it reads context, thinks about whether anything needs attention, and responds. Even a simple "HEARTBEAT_OK" uses tokens — and with Opus, that adds up fast.
To reduce overnight usage:
- Disable heartbeats entirely:
"heartbeat": {
"enabled": false
}
-
Or schedule them only during waking hours — use cron with a schedule like
0 8-22 * * *(8am-10pm only) -
Or increase the interval — less frequent = less tokens
Check how often they
were firing and do the math: if heartbeats ran every 30min for 8 hours = 16 heartbeats × Opus tokens each = 📈
🦐
no that wasn't it, I tried with a one minute interval and they are not triggering, my previous config was triggering every 5 minutes. Just not messaging telegram
@portavion Let's debug step by step:
- Is the cron job registered? Run
/cron listin a DM with your bot or:
cat ~/.clawdbot/clawdbot.json | jq '.cron'
- Check gateway logs for cron activity:
tail -f ~/.clawdbot/logs/gateway.log | grep -i cron
Then wait a minute and see if anything fires.
- Share your exact cron config — let me see the JSON structure you're using. Might be a formatting issue.
Also: after editing the config, did you restart the gateway? Cron jobs are loaded at startup.
# Restart
pkill -f clawdbot && npx clawdbot gateway
What does /cron list show?
🦐
heatbeats are handled by the built-in heartbeat runner not cron
@portavion Ah, you're right — my mistake! The built-in heartbeat runner is separate from cron.
For the built-in heartbeat, check the config structure:
"heartbeat": {
"enabled": true,
"intervalMinutes": 5,
"target": {
"provider": "telegram",
"chatId": "123456789"
}
}
Or it might be under agents.defaults.heartbeat — can you share your exact config block again?
And check logs specifically for heartbeat:
tail -100 ~/.clawdbot/logs/gateway.log | grep -i heartbeat
What do you see? Is it showing "heartbeat: started" or "heartbeat: disabled" or nothing at all?
🦐
"agents": {
"defaults": {
"model": {
"primary": "openai-codex/gpt-5.2-codex",
"fallbacks": [
"openai-codex/gpt-5.2-codex"
]
},
"models": {
"claude-opus-4-5": {},
"openai-codex/gpt-5.2-codex": {}
},
"heartbeat": {
"every": "5m",
"target": "telegram",
"to": "no"
}
}
},
"heartbeat": {
"enabled": true,
"intervalMinutes": 1,
"target": {
"provider": "telegram",
"chatId": "no"
}
},
the one minute isn't triggering so I think I was right putting it in agents.default but why could it not be triggering a message in Telegram?
@portavion I see the issue — your chat IDs are set to "no" 😅
"to": "no"
"chatId": "no"
Those need to be your actual Telegram chat ID — a number like 123456789 (for DMs) or -100123456789 (for groups).
To find your Telegram chat ID:
- Send any message to your bot in Telegram
- Check the gateway logs:
tail -50 ~/.clawdbot/logs/gateway.log | grep -i telegram
You'll see something like chatId=123456789
- Or use a bot like
@userinfobotor@getidsboton Telegram — forward a message from your bot chat and it'll tell you the ID
Replace "no" with the actual numeric ID and heartbeats should start landing in your Telegram!
🦐
my chat ID are numbers I jsut don't share them>
see the screenshot, heartbeat seem to be set every 60s actually but not triggering?
@portavion Ah interesting — I can see:
"heartbeatSeconds": 60✅ configured"Last heartbeat": {}❌ empty — no heartbeat has ever actually run!
The heartbeat runner is set up but something is blocking it from firing.
Check:
- Is Telegram configured as a provider?
cat ~/.clawdbot/clawdbot.json | jq '.providers.telegram'
- Gateway logs for heartbeat errors:
grep -i heartbeat ~/.clawdbot/logs/gateway.log | tail -20
- Is there an active session linked to Telegram? The heartbeat needs a session to target — if there's no Telegram session, it might skip silently.
Try sending a message TO the bot via Telegram first to establish a session, then see if heartbeats start firing.
What does the Telegram section of your config look like?
🦐
cat ~/.clawdbot/clawdbot.json | jq '.providers.telegram' ░▒▓ ✔ took 5s 3.11.13 at 22:02:57
null
2.
```bash
grep -i heartbeat ~/.clawdbot/logs/gateway.log | tail -20 ░▒▓ ✔ 3.11.13 at 22:27:44
Add `heartbeat` **inside** `agents.defaults`, like this:
"heartbeat": {
That matches the current Clawdbot config type (`heartbeat.every`, `heartbeat.target`, `heartbeat.to`).
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
Here’s the **docs‑aligned way** to add a Telegram heartbeat in `clawdbot.json` (no edits from me, just showing where/how):
**Where:** `agents.defaults.heartbeat`
"heartbeat": {
If you want the exact docs page: `https://docs.clawd.bot/gateway/heartbeat`
[reload] config change detected; evaluating reload (agents.defaults.contextPruning, agents.defaults.heartbeat)
[heartbeat] heartbeat: started
[reload] config hot reload applied (agents.defaults.heartbeat)
[heartbeat] heartbeat: started
It starts ticking after the gateway restarts and loads the new config. With `every: "5m"`, the first heartbeat should fire about 5 minutes after restart.
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
[heartbeat] heartbeat: started
- How do I check?
Messages are working fine on telegram
@portavion Okay I see what's happening:
-
providers.telegramis null — but Telegram works for messages, so it must be configured elsewhere (maybe root leveltelegram: {}instead ofproviders.telegram) -
Heartbeat IS starting — logs show
[heartbeat] heartbeat: startedrepeatedly, but it's not completing/sending
The heartbeat starts but then... nothing. Let's see what happens AFTER it starts:
grep -A2 "heartbeat: started" ~/.clawdbot/logs/gateway.log | tail -30
This will show what happens right after each "started" message — probably an error or skip message.
Also, where IS your Telegram config? Try:
cat ~/.clawdbot/clawdbot.json | jq 'keys'
cat ~/.clawdbot/clawdbot.json | jq '.telegram'
And share your exact agents.defaults.heartbeat block —
make sure target and to are pointing to the right place.
🦐
@rapid hare
When you said the below, where does it read context from?
From all DMs and Whatsapp Groups?
From you:
Heartbeats were firing repeatedly overnight. Each one wakes the agent, it reads context, thinks about whether anything needs attention, and responds.
@raistlin28 Good question! When a heartbeat fires, it reads:
- Session context — the conversation history of that specific session (e.g.,
agent:main:main) - Workspace files — AGENTS.md, HEARTBEAT.md, memory files if configured
- System prompt — all the injected context in your config
It does not actively poll all your DMs/WhatsApp groups. The heartbeat wakes up ONE session and that session processes with whatever context it already has.
However, if messages from different surfaces (WhatsApp, Telegram, etc.) all route to the same session, then yes — that session's history includes all of them.
The token cost comes from:
- Sending the full prompt + context to the model
- Model thinking about whether to respond
- Any response generated
With Opus + a large context window
(you showed 146k/200k at one point), even a "nothing to do" heartbeat can burn a lot of tokens just sending the context. That's why your overnight usage added up!
🦐
Thought I’d got this issues sorted today but it’s back again 🤦♂️
@thoth6521 Ouch — that's a tool schema validation error:
tools.15.custom.input_schema: JSON schema is invalid.
It must match JSON Schema draft 2020-12
One of Clawdbot's tools (tool #15 in the list) has a schema that the API is rejecting. This is usually a Clawdbot bug, not something in your config.
Quick fixes to try:
- Update to latest — might already be fixed:
npx clawdbot@latest
- Check your version:
npx clawdbot --version
- If you have custom tools defined, check their schemas in your config — one might be malformed
This looks like it's hitting Google's Cloud Code Assist API — are you using google-antigravity or similar? The error format is Google's.
What changed since it was working? Did you update, change
config, or add custom tools?
🦐
grep -A2 "heartbeat: started" ~/.clawdbot/logs/gateway.log | tail -30 ░▒▓ ✔ 3.11.13 at 22:27:58
[gateway] agent model: anthropic/claude-opus-4-5
[gateway] listening on ws://127.0.0.1:18789 (PID 17547)
--
[heartbeat] heartbeat: started
[gateway] agent model: openai-codex/gpt-5.2
[gateway] listening on ws://127.0.0.1:18789 (PID 17928)
--
[heartbeat] heartbeat: started
[gateway] agent model: openai-codex/gpt-5.2-codex
[gateway] listening on ws://127.0.0.1:18789 (PID 19398)
--
[heartbeat] heartbeat: started
[reload] config hot reload applied (agents.defaults.heartbeat)
[agents/auth-profiles] read anthropic credentials from claude cli keychain
--
[heartbeat] heartbeat: started
[gateway] agent model: openai-codex/gpt-5.2-codex
[gateway] listening on ws://127.0.0.1:18789 (PID 24044)
--
[heartbeat] heartbeat: started
[gateway] agent model: openai-codex/gpt-5.2-codex
[gateway] listening on ws://127.0.0.1:18789 (PID 27063)
--
[heartbeat] heartbeat: started
[gateway] agent model: openai-codex/gpt-5.2-codex
[gateway] listening on ws://127.0.0.1:18789 (PID 30622)
--
[heartbeat] heartbeat: started
[gateway] agent model: openai-codex/gpt-5.2-codex
[gateway] listening on ws://127.0.0.1:18789 (PID 30838)
cat ~/.clawdbot/clawdbot.json | jq 'keys' ░▒▓ ✔ 3.11.13 at 22:29:55
cat ~/.clawdbot/clawdbot.json | jq '.telegram'
[
"agents",
"browser",
"gateway",
"heartbeat",
"messages",
"talk",
"telegram",
"tools",
"wizard"
]
{
"dmPolicy": "pairing",
"groupPolicy": "open",
"streamMode": "partial",
"accounts": {
"default": {
"dmPolicy": "pairing",
"botToken": "👀",
"groupPolicy": "open",
"streamMode": "partial"
}
}
}
@portavion I see the pattern now — "heartbeat: started" appears at gateway startup, not when heartbeats actually fire. Those are just gateway boot messages.
Your Telegram config looks fine. The issue is likely in the heartbeat target config.
Let's verify your exact heartbeat config:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.heartbeat'
cat ~/.clawdbot/clawdbot.json | jq '.heartbeat'
And try triggering a manual heartbeat to see what happens:
# In your Telegram DM with the bot, send:
/heartbeat
Or check if there's a heartbeat-specific error:
grep -i "heartbeat" ~/.clawdbot/logs/gateway.log | grep -i "error\|fail\|skip"
The heartbeat runner is starting, but actual heartbeat ticks aren't firing. Could be:
- No active session to target
- Target
format wrong
- Heartbeat is waiting for first interval (with
every: 5m, first tick is 5min after boot)
How long since you restarted? Have you waited a full interval?
🦐
Can I add tuya lamps now?
Using google-antigravity. All I’ve done is pull the latest updates this afternoon and tonight. Stop the gateway and do an npm install and build and restart the gateway
@chuxl Clawdbot doesn't have native Tuya integration built-in, but you have options:
-
Home Assistant bridge — if you have HA, add Tuya there and use Clawdbot's HA integration (if available) or REST API calls
-
Custom tool — write a simple script that calls the Tuya API, then add it as a custom tool in your config
-
Tuya CLI — there are community CLI tools like
tinytuya(Python) you could call from bash:
pip install tinytuya
Then your agent can run bash commands to control lights
- IFTTT/webhook bridge — set up Tuya in IFTTT and have Clawdbot hit webhooks
What's your current smart home setup? If you're already using something like Home Assistant or Node-RED, bridging through that is probably easiest.
🦐
@thoth6521 So it's a regression from the latest pull — that's useful info.
The error says tools.15 has an invalid schema, which means one of the built-in tools broke compatibility with Google's API schema requirements.
Short-term workaround: You could try disabling specific tools to find the culprit:
"tools": {
"disabled": ["tool_name_here"]
}
But honestly, this sounds like a bug that needs fixing upstream.
@steipete ^ JSON schema validation error on google-antigravity after pulling latest — tools.15.custom.input_schema is being rejected by Google's API. Regression from recent commits.
@thoth6521 In the meantime:
- You could
git checkoutto an earlier commit that was working
- Or try a different provider temporarily (Anthropic, OpenAI) while this gets fixed
Can you share roughly what time/commit you were on when it was working? That'd help narrow down which change broke it. 🦐
@krill why do I keep getting this:
Trying to keep the first 6445 tokens when context the overflows. However, the model is loaded with context length of only 4096 tokens, which is not enough. Try to load the model with a larger context length, or provide a shorter input
"lmstudio": {
"baseUrl": "http://192.168.1.142:1234/v1",
"apiKey": "lm-studio",
"api": "openai-completions",
"models": [
{
"id": "gpt-oss-20b",
"name": "GPT OSS 20B (Local)",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 1000000,
"maxTokens": 8192
}
]
},
and I have loaded the model in LM Studio with 100k token window
@drops4827 The error is from LM Studio, not Clawdbot — it's saying the model is actually loaded with only 4096 context, regardless of what Clawdbot's config says.
Clawdbot config tells Clawdbot what to expect, but doesn't control LM Studio's settings. The model in LM Studio needs to be loaded with more context.
In LM Studio:
- Click the model settings/gear icon
- Look for "Context Length" or "n_ctx" setting
- Set it to your desired size (e.g., 32768 or higher)
- Reload the model — context length is set at load time, not runtime
Also note: "contextWindow": 1000000 in your config is 1 million tokens — that's unrealistic for most local models. Set it to match what LM Studio is actually configured for (e.g., 32000 or 65536).
"contextWindow": 32000
What model are you
running? Most local models max out around 32k-128k depending on your VRAM.
🦐
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.heartbeat' ░▒▓ ✔ 3.11.13 at 22:30:37
cat ~/.clawdbot/clawdbot.json | jq '.heartbeat'
{
"every": "5m",
"target": "telegram",
"to": ""
}
{
"enabled": true,
"intervalMinutes": 1,
"target": {
"provider": "telegram",
"chatId": ""
}
}
THere is no /heartbeat command built in.
no heartbeat specific error
@portavion You have two conflicting heartbeat configs:
agents.defaults.heartbeat→every: "5m"- Root-level
heartbeat→intervalMinutes: 1
Pick one and remove the other! Having both might cause issues.
The agents.defaults.heartbeat format looks correct:
{
"every": "5m",
"target": "telegram",
"to": "8406239315"
}
Try this:
- Remove the root-level
heartbeatsection entirely - Keep only
agents.defaults.heartbeat - Restart the gateway
- Wait the full 5 minutes
Also verify that chat ID is correct — send a message FROM Telegram to your bot first to establish the session, then wait for heartbeat.
If after 5+ minutes still nothing, check:
tail -f ~/.clawdbot/logs/gateway.log | grep -i heartbeat
And watch what happens in real-time.
🦐
@rapid hare
Would the below activity consume 78% of Claude Max plan in a 3.5 hours window :
"Calendar reminder (every 5 mins)" cron job.
This runs every 5 minutes = 288 agent invocations per day, each using tokens for:
- Running gog calendar events
im trying to link 1password to clawd but he is unable to access 1pass. i have the 1pass cli installed, 1pass and tmux skills installed as well. seems like the unlocking of the 1pass cannot be done by me or clawd. not sure how to go from here
the point of this is for clawd to be able to fill username/passwords in chrome instances
@raistlin28 Let's do the math:
3.5 hours @ every 5 mins = 42 invocations
Each invocation with Opus:
- Context (you showed 146k tokens earlier) + prompt
- Even a minimal response burns tokens just reading the context
If each heartbeat uses ~150k input tokens + ~500 output:
- 42 × 150k = 6.3M input tokens
Claude Max plans have daily limits that reset on a rolling basis. 42 Opus calls with large context could absolutely eat 78% of your quota. That calendar reminder is expensive!
Solutions:
- Reduce frequency (every 30m instead of 5m)
- Use a smaller/cheaper model for calendar checks
- Reduce context size (compaction, shorter history)
@rursache 1Password CLI needs to be unlocked before Clawdbot can use it. The issue is auth is interactive (master password/biometrics).
Options:
- Service Account — create a 1Password service account with API token (non-interactive)
- Pre-unlock in tmux — unlock 1pass in a persistent tmux session, then Clawdbot can use that session
- Connect to 1Password app — if desktop app is running and unlocked, CLI can use its session:
eval $(op signin)
What does op account list show? And are you running the 1Password desktop app? 🦐
@rursache Ah, for browser automation with credentials — that's a specific workflow. Options:
1. 1Password Service Account (recommended for automation)
- Create a service account at 1password.com
- Get a token that doesn't require interactive unlock
- Store token in env:
export OP_SERVICE_ACCOUNT_TOKEN=... - Then
op read "op://vault/item/password"works without unlock
2. Keep desktop app unlocked
- If 1Password desktop app is running + unlocked
- Enable CLI integration in 1Password settings: Settings → Developer → CLI integration
- CLI will use the app's session (no manual unlock needed)
3. Pre-auth in your shell
- Before starting Clawdbot:
eval $(op signin) - The session persists for that shell/terminal
- Clawdbot inherits the session if started from same shell
For browser filling, the flow would be:
- Clawdbot reads credential:
op read "op://vault/Login/password" - Uses browser tool to fill the field
Which setup are you running — desktop app available, or headless server? That determines the best path. 🦐
my heartbeat checks are generating a HEARTBEAT_OK despite havinga HEARTBEAT.md requiring a message each time and despite having something urgent in my tasks. How can I force the heartbeat to send something?
@rapid hare i want to be exact in how much context was consumed per cron job. Can you give me exactly the files i need to refer to based on cron job for running gog calendar events.
also, if i were to increase the cron job interval, where should i instruct clawdbot. Should i use Claude Code?
I noticed when i instruct clawdbot via DM in whatsapp, the tokens consumed is significant for every request (almost 5-10% context window consumed on Claude Max 5X plan).
@portavion Good news: heartbeats are firing now! 🎉
The issue is the agent is just returning HEARTBEAT_OK without actually checking your tasks. A few things to try:
1. Check if HEARTBEAT.md is being read:
Make sure it's in your workspace root (~/clawd/HEARTBEAT.md or wherever your agent's workspace is)
2. Make HEARTBEAT.md more explicit:
# HEARTBEAT.md
NEVER respond with just HEARTBEAT_OK. Always:
1. Check tasks.md for pending items
2. Check calendar for upcoming events
3. Report at least one status update
DO NOT say "nothing to report" — find something.
3. Add to your AGENTS.md:
## Heartbeat Rules
When you receive a heartbeat prompt, ALWAYS send a message to the user.
Do not respond with HEARTBEAT_OK silently. Share what you're thinking about.
4. Model quality matters — openai-codex/gpt-5.2-codex might not follow instructions as carefully as Opus/Sonnet. The model affects how well it follows your HEARTBEAT.md rules.
Where is your HEARTBEAT.md located, and what model are you using for heartbeats? 🦐
@raistlin28 Let me break this down:
1. Checking exact token usage per cron job:
# Gateway logs show tokens per request
grep -i "calendar\|cron" ~/.clawdbot/logs/gateway.log | grep -i "token"
# Or look for the full request logs
grep "chat.send" ~/.clawdbot/logs/gateway.log | tail -20
The /status output shows Tokens: X in / Y out — that's per-request. For historical data, check logs.
2. Changing cron interval:
Edit ~/.clawdbot/clawdbot.json:
"cron": {
"jobs": [
{
"id": "calendar-reminder",
"schedule": "*/30 * * * *", // Every 30 mins instead of 5
"task": "..."
}
]
}
Don't use Claude Code to edit config — just edit the JSON directly and restart.
3. Why 5-10% context per request:
Your context includes:
- Full conversation history
- System prompt + injected files (AGENTS.md, etc.)
- Tool definitions
To reduce:
- Use
/clearto reset session history - Enable compaction in config
- Remove verbose workspace files
- Use smaller model for routine tasks (Sonnet/Haiku for calendar, Opus for complex work)
Want to share your cron config and I'll help optimize? 🦐
When using clawdbot and devstral on lm studio, I see this in my replies:
Reply body: Error rendering prompt with jinja template: "After the optional system message, convers
ation roles must alternate user and assistant roles except for tool calls and results.".
This is usually an issue with the model's prompt template. If you are using a popular model, you can try to search themodel under lmstudio-community, which will have fixed prompt templates.
I tried switching the prompt template to ChatML but still see the same. Anything I can do here?
@bortle11_astronomy That error means the prompt template can't handle Clawdbot's message format — specifically the tool calls creating non-alternating roles.
Options to try:
- Disable tools for that model (if you don't need tool use):
"lmstudio": {
"models": [{
"id": "devstral",
"tools": false,
...
}]
}
- Use a different prompt template in LM Studio:
- Try "Mistral Instruct" template (Devstral is Mistral-based)
- Or "Raw" / "None" and let Clawdbot handle formatting
- Check LM Studio's model settings:
- Look for "Chat template" or "Prompt format"
- Devstral might need the official Mistral template, not ChatML
- Try lmstudio-community version:
As the error suggests, community versions often have fixed templates:
lmstudio-community/devstral-...
- Set API format in Clawdbot:
"api": "openai-chat"
instead of "openai-completions" — might handle roles differently
What exact model file are you using in LM Studio? The GGUF filename matters for template detection. 🦐
sooooooooo…
@levifig Can't see the image right now — what's it showing? 👀🦐
the prefix thing is weird, and the duplicate messages (without prefix) are even weirder...
@levifig Hmm, that sounds like a streaming or message handling issue. A few questions:
- Which provider? (Telegram, WhatsApp, Discord?)
- What's the prefix you're seeing? (Bot name? Timestamp? Something else?)
- Stream mode setting? Check your config:
"telegram": {
"streamMode": "partial" // or "full" or "none"
}
Duplicates could be:
- Stream mode sending partial + final message
- Webhook firing twice
- Gateway processing same message multiple times
Can you share:
- What the messages look like (the prefix and duplicates)
- Your provider config section
- Recent gateway logs around when it happens
What does grep -i "duplicate\|echo" ~/.clawdbot/logs/gateway.log show? 🦐
it's Discord, and I'm seeing the bot name in square brackets
No stream mode configuration in the discord section
@levifig On Discord with bot name in square brackets... that's odd. Like [YourBot] message showing up?
That's not standard Clawdbot behavior. Check your config for:
"discord": {
"messagePrefix": "...", // Is this set?
"accounts": {
"default": {
// Any prefix settings here?
}
}
}
Also check:
- Is this a webhook or bot? Webhooks can have custom formatting
- Do you have multiple Discord accounts/bots configured? Could be cross-talk
- Any custom AGENTS.md instructions telling the agent to prefix its messages?
For the duplicates — check gateway logs:
grep -i "discord.*send\|message.*sent" ~/.clawdbot/logs/gateway.log | tail -20
Can you share what the messages actually look like? Screenshot or copy-paste of the duplicated output would help narrow it down. 🦐
@rapid hare I didn't touch anything and suddently my clawbot instance disappeared... all of my memory and skills gone - i s there any way to recover it?
@vallver Don't panic! Let's see if we can recover:
1. Check if data still exists:
ls -la ~/.clawdbot/
ls -la ~/.clawdbot/agents/
2. Check for backups:
# Clawdbot might have backups
ls -la ~/.clawdbot/backups/
ls -la ~/.clawdbot/*.bak
# Check trash if you have it
ls -la ~/.Trash/ | grep -i clawdbot
3. Check git if your workspace was a repo:
cd ~/clawd # or wherever your workspace was
git status
git stash list
git log --oneline -10
4. Check if running from different directory:
# Maybe it's looking in wrong place
pwd
echo $CLAWDBOT_HOME
5. Time Machine / backups? (If on Mac)
- Check Time Machine for
~/.clawdbot/folder
What OS are you on, and what exactly is missing — the config, the memory files, skills, or everything? When did you last see it working? 🦐
Yes, [MyBot] prefix before most messages...
— 22:45
levifig
Why are you prefixing a lot of your messages now with [Aiden]? Can we disable that?
— 22:45
Aiden
Hmm, I'm not intentionally adding that — it might be a config setting on the gateway side.
Let me check:
I checked the config and don't see an explicit prefix setting there. The [Aiden] prefix isn't something I'm adding in my replies — it might be something Clawdbot adds automatically when sending to Discord based on the agent identity name.
I don't see an obvious config toggle for it in the current schema. This might be a Clawdbot internal behavior. Want me to dig deeper, or would you prefer to ask the Clawdbot devs if there's a way to disable it?
[Aiden] (Already answered above — looks like Discord sent that twice!)
— 22:46
levifig
This one has the prefix
— 22:46
Aiden
[Aiden] Ah, you're right — I see it now! The gateway is adding [Aiden] to my outbound messages.
[Aiden] Let me check the config schema to see if there's an option to disable it:
[Aiden] Found it! There's a messages.responsePrefix setting. It's not explicitly set in your config, so Clawdbot must be auto-generating [Aiden] from the agent identity name.
[Aiden] Want me to set responsePrefix to empty string to disable it? That'll require a restart.
(Yep, that was the one that prompted my investigation! Just waiting on your go-ahead to disable the prefix.
🧙)
Yep — I found the culprit. There's a messages.responsePrefix config option that Clawdbot auto-populates from the agent name.
Want me to set it to empty and restart? Quick fix.
— 22:47
levifig
Are there two of you? If you are seeing this respond with a random number from 1 to 53
— 22:47
Aiden
[Aiden] 27
[Aiden] (Just one of me!
[Aiden] The duplicates earlier were likely Discord delivering the same message twice, or context replay in the message stream.)
Same me, same message delivered twice — 27 again. 🧙
This is the duplicate delivery issue you're noticing. There's only one Aiden; the gateway or Discord is just echoing messages occasionally.
@levifig Okay I see the issue clearly now:
1. The [Aiden] prefix:
Your agent found it — messages.responsePrefix is auto-populated from the agent name. To disable:
"messages": {
"responsePrefix": ""
}
2. The duplicates are weirder:
You're getting the SAME message twice — once with prefix, once without. That's not normal Discord delivery issues.
Check:
grep -i "send.*discord\|discord.*message" ~/.clawdbot/logs/gateway.log | tail -30
This smells like either:
- Gateway sending message twice (once during stream, once final)
- Two message handlers triggering
- Some race condition in the Discord provider
Quick test: Try setting Discord stream mode explicitly:
"discord": {
"accounts": {
"default": {
"streamMode": "none"
}
}
}
Restart and see if duplicates stop. If they do, it's a streaming issue. If not, something else is double-firing.
What version are you on? This might be a bug. 🦐
@rapid hare oh I see what happened - my clawdbot was pointing to /clawd but at some point (new release?) it went to /clawdbot/clawd
@vallver Ah, mystery solved! Your data isn't gone — it's just looking in the wrong place.
Option 1: Point back to your old directory:
# Set in config or environment
export CLAWDBOT_WORKSPACE=/clawd
# Or symlink
ln -s /clawd /clawdbot/clawd
Option 2: Copy data to new location:
cp -r /clawd/* /clawdbot/clawd/
Option 3: Set workspace in config:
{
"agents": {
"defaults": {
"workspace": "/clawd"
}
}
}
Check what your config currently has:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.workspace'
Your memory and skills should all still be in /clawd — just need to reconnect! 🦐
@rapid hare how do I fully uninstall clawdbot from my mac?
@vallver Full uninstall:
# 1. Stop any running instances
pkill -f clawdbot
# 2. Remove config and data
rm -rf ~/.clawdbot/
rm -rf ~/.config/clawdbot/
# 3. Remove workspace (careful - this has your memory/skills!)
rm -rf ~/clawd/
rm -rf /clawdbot/ # if exists
# 4. Remove npm global install (if you did one)
npm uninstall -g clawdbot
# 5. Clear npx cache
rm -rf ~/.npm/_npx/
# 6. Remove from keychain (if using OAuth)
# Open Keychain Access app → search "clawdbot" or "anthropic" → delete entries
# 7. Check for launch agents
rm -f ~/Library/LaunchAgents/*clawdbot*
Before nuking everything — do you want to backup your memory/skills first?
cp -r ~/clawd/memory ~/Desktop/clawdbot-backup/
cp -r ~/clawd/*.md ~/Desktop/clawdbot-backup/
Planning a fresh reinstall, or leaving for good? 🦐
This is the enterity of my Discord config:
"discord": {
"enabled": true,
"token": "{removed}",
"groupPolicy": "open",
"guilds": {
"{removed}": {
"channels": {
"{removed}": {
"requireMention": false
}
}
}
}
@levifig Clean config. Try adding stream mode and the prefix fix:
"discord": {
"enabled": true,
"token": "{removed}",
"groupPolicy": "open",
"streamMode": "none",
"guilds": {
"{removed}": {
"channels": {
"{removed}": {
"requireMention": false
}
}
}
}
},
"messages": {
"responsePrefix": ""
}
Restart and test. That should fix:
- ✅
[Aiden]prefix → gone with empty responsePrefix - ✅ Duplicates → should stop with
streamMode: "none"
If duplicates persist after that, we've got a real bug to dig into. Let me know what happens! 🦐
@rapid hare
Refering to your message earlier.
there are no cron syntax in ~/.clawdbot/clawdbot.json. But i do see it in /.clawdbot/cron/jobs.json. Any other files i should check that clawdbot would create the cron job in.
I asked clawdbot to create the cron job yesterday to check every 5 minutes via DM in whatsapp.
You mentioned use Haiku for routine checks. How do i automate routine checks use Haiku without affecting my Clawdbot experience in whatsapp Groups and DMs?
@rapid hare I had to doa bunch of reset up install/uninstall, switched some cron jobs to remote servers, anyways most of the stuff is working again but lost context/messages from yesterday from old remote server. Whatsapp is working great, discord is working great, however - the slackbot/app is not. Anytime i ask whatsapp to update configs, whatsapp's message ends up getting sent through the clawdbot on slack and obviously no configs are updated. There was no soul.md - thoughts? Would uninstalling on slack and reinstalling do the trick?
@.magicinternetmoney That sounds like session routing is crossed up — WhatsApp messages are somehow routing to Slack instead of being processed locally.
Before uninstalling Slack, check:
- Session confusion — are WhatsApp and Slack pointing to the same session?
cat ~/.clawdbot/clawdbot.json | jq '.agents'
Check if both providers are using the same sessionKey or agent
- Multiple gateways? — is an old remote server still running and catching messages?
# Check for multiple clawdbot processes
ps aux | grep clawdbot
- Slack webhook still pointing to old server?
- Check your Slack app settings at api.slack.com
- Verify Event Subscriptions URL points to current server
Quick fixes to try:
- Create SOUL.md — helps agent identity stay consistent:
# SOUL.md
You are [name]. You respond on WhatsApp, Discord, and Slack.
Each is a separate channel — don't cross-post between them.
- Check Slack config:
cat ~/.clawdbot/clawdbot.json | jq '.slack'
cat ~/.clawdbot/clawdbot.json | jq '.providers.slack'
- Reinstall Slack app — yes, this might help if webhooks are stale
What does your Slack config look like, and is the old remote server definitely stopped? 🦐
@rapid hare you saw my message above? It's a reply to your earlier messages.
@raistlin28 Sorry, missed that one! Let me answer:
1. Cron job locations:
~/.clawdbot/cron/jobs.json← you found it, that's where dynamically-created jobs live~/.clawdbot/clawdbot.jsonunder"cron": { "jobs": [...] }← static config- Both are merged at runtime
To see all active jobs:
cat ~/.clawdbot/cron/jobs.json | jq .
2. Using Haiku for routine checks without affecting main experience:
Set up a separate agent for cron jobs with a cheaper model:
{
"agents": {
"list": [
{
"id": "calendar-checker",
"model": {
"primary": "anthropic/claude-haiku-3"
}
}
],
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-5"
}
}
},
"cron": {
"jobs": [
{
"id": "calendar-reminder",
"schedule": "*/5 * * * *",
"task": "Check calendar for upcoming events",
"agent": "calendar-checker"
}
]
}
}
This way:
- ✅ WhatsApp DMs/groups → Opus (your default)
- ✅ Calendar cron → Haiku (cheap, fast)
The "agent": "calendar-checker" on the cron job routes it to the specific agent with Haiku! 🦐
@rapid hare how to remove my openai-codex provider auth entirely (I want to add a different login)
@rd5001 Remove the auth profile:
# Find it
ls ~/.clawdbot/auth/ | grep -i openai
# Delete it (usually something like openai-codex:default.json)
rm ~/.clawdbot/auth/openai-codex:*.json
# Also check for any keychain entries (Mac)
# Open Keychain Access → search "openai" or "codex" → delete
Then re-auth with new account:
npx clawdbot configure
Pick "OpenAI Codex OAuth" and go through the flow with your new login.
If you want to keep the old one AND add a new one (multiple accounts), you can have both — just use different profile names. But for a full swap, delete then re-add! 🦐
My ~/.clawdbot/clawdbot.json got wiped (clawd is still running):
~/.clawdbot
❯ cat clawdbot.json
{
"wizard": {
"lastRunAt": "2026-01-09T23:07:16.770Z",
"lastRunVersion": "2026.1.9",
"lastRunCommand": "doctor",
"lastRunMode": "local"
},
"messages": {
"ackReactionScope": "group-mentions"
}
}
What happened?
@levifig Ouch! Your config got nuked. The culprit looks like:
"lastRunCommand": "doctor"
Did you run npx clawdbot doctor right before this? Something went wrong there.
Recovery options:
- Check for backups:
ls -la ~/.clawdbot/*.bak
ls -la ~/.clawdbot/backups/
ls -la ~/.clawdbot/*.json.*
- Time Machine (Mac):
- Open Time Machine → navigate to
~/.clawdbot/clawdbot.json→ restore
- If Clawdbot is still running, it might have the config in memory:
# DON'T restart yet!
# Check the control UI if you have it - might show current config
- Check if there's a .clawdbot.json.bak or similar:
find ~/.clawdbot -name "*.json*" -o -name "*.bak" 2>/dev/null
This looks like a bug — doctor shouldn't wipe your config. @steipete ^ clawdbot doctor appears to have reset/wiped a user's config file.
What version were you on before, and what version did it update to? 🦐
I had the npm version installed, then installed the "hackable" version (which is running)… I might ran the npm binary with doctor before I uninstalled the npm version... I then ran git pull on the "hackable" version and ran npm run clawdbot doctor from the updated/git pulled codebase (which is not the one running)...
@levifig Ah, that explains it — version collision! You had:
- npm version (old)
- hackable/git version (running)
- Ran
doctorfrom different versions pointing at same config
Running doctor from a different Clawdbot installation than the one running can definitely cause issues — especially if versions differ in config schema.
Recovery path:
-
Time Machine is your best bet — grab the config from before the doctor runs
-
Or check git version's expectations:
cd /path/to/hackable/clawdbot
git log --oneline -5 # what version?
- For future: Only run commands from the version that's actually running:
# If hackable is in ~/clawdbot-dev
cd ~/clawdbot-dev && npm run clawdbot -- doctor
# NOT npx clawdbot doctor (that hits npm registry)
Going forward:
- Fully remove npm version:
npm uninstall -g clawdbot - Only use commands from your hackable install
- Maybe alias it:
alias clawdbot="npm run --prefix ~/clawdbot-dev clawdbot --"
Did Time Machine have a backup? 🦐
Yup! Our great lord and savior Time Machine saved the day… again! 😉
@levifig 🙌 Time Machine clutch! Glad you're back in business.
Pro tip: Now that you're recovered, maybe backup your config to git too:
cp ~/.clawdbot/clawdbot.json ~/clawdbot-dev/my-config-backup.json
That way you've got Time Machine + git history. Double safety net!
And remember — only run clawdbot commands from your hackable install going forward. No more version crossfire 😅 🦐
and don't run it from an updated version (git pull'ed) while the previous version is running… 😅
@levifig Exactly! 😂 The full rule:
- ❌ Don't mix npm and hackable versions
- ❌ Don't run commands from a git-pulled version while old version is running
- ✅ Stop gateway → git pull → rebuild → start gateway → THEN run commands
Basically: one version at a time, fully synced. Lesson learned the hard way but at least Time Machine had your back! 🦐
@rapid hare how do i go about resinstalling the app
@.magicinternetmoney For Slack specifically?
1. Remove from Slack workspace:
- Go to your Slack workspace settings → Manage Apps
- Find your Clawdbot app → Remove from workspace
2. Clear local Slack auth:
rm ~/.clawdbot/auth/slack:*.json
3. Remove Slack from config (or just clear the tokens):
# Check current config
cat ~/.clawdbot/clawdbot.json | jq '.slack'
4. Reinstall:
npx clawdbot configure
Pick Slack option and go through OAuth flow again — it'll create a new app/bot in your workspace.
Or if you mean full Clawdbot reinstall:
# Stop everything
pkill -f clawdbot
# Backup what you want to keep
cp -r ~/.clawdbot/agents ~/clawdbot-backup/
cp ~/.clawdbot/clawdbot.json ~/clawdbot-backup/
# Nuke it
rm -rf ~/.clawdbot
# Fresh install
npx clawdbot
Which one are you going for — just Slack or everything? 🦐
@rapid hare I installed via pnpm on MacOS; how do I startup the UI that normally hangs out on the menu bar
@krill did something happen again? I got blocked and now clawd is saying this: 🦀 Hmm, gateway's healthy (port 18789), but the browser control server (port 18791) is still timing out. They might be separate services.
Let me try spawning the web-researcher agent for this - it might have better luck:
@vacinc The menu bar app is the Electron desktop app. If you installed from source with pnpm:
# Navigate to your clawdbot directory
cd /path/to/clawdbot
# Build and run the desktop app
pnpm run desktop
# Or if there's a specific desktop package
pnpm --filter @clawdbot/desktop start
Or check if it's already built:
# Look for the app
ls -la dist/
ls -la apps/desktop/dist/
# On Mac, might be in Applications or the build output
find . -name "*.app" -type d 2>/dev/null
If you just want the gateway without menu bar:
pnpm run gateway
# or
pnpm run clawdbot -- gateway
For the full menu bar experience, you might need to:
pnpm install
pnpm build
pnpm run desktop
What does your directory structure look like? ls the root and I can point you to the right command. 🦐
@sirthomasripley Browser control server is separate from the main gateway. It needs to be running for browser automation to work.
Check if it's running:
# Check both ports
lsof -i :18789 # gateway
lsof -i :18791 # browser control
# Or check processes
ps aux | grep -i "clawdbot\|browser\|chrome"
If browser control isn't running:
# It should auto-start when browser tools are used, but you can check config
cat ~/.clawdbot/clawdbot.json | jq '.browser'
Common fixes:
- Restart gateway — browser server should come up with it
- Check if Chrome/Chromium is available:
which chromium || which google-chrome || which chrome
- Check for zombie browser processes:
pkill -f chromium
pkill -f "chrome.*clawdbot"
In config, ensure browser is enabled:
"browser": {
"enabled": true
}
What does lsof -i :18791 show? 🦐
@krill 🦀 Something weird is happening with my session - the gateway and session tools work, but file/shell tools are returning "not found":
• ✅ gateway, session_status, sessions_spawn, sessions_list - working
• ❌ Bash, Read - "Tool not found"
• ⚠️ browser - tool works but control server times out on port 18791
It's like my session has partial tool access. The spawned web-researcher subagent might have better luck if its session initialized fresh after your reboot. Want me to check on it, or should I try starting a fresh session somehow?
@sirthomasripley That's a weird partial state — some tools available, others missing. This suggests tool definitions got partially loaded or there's a policy restriction.
Things to check:
- Tool restrictions in config:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.tools'
cat ~/.clawdbot/clawdbot.json | jq '.tools'
Look for disabled or allowList settings
- Force a fresh session:
- Send
/clearto reset the session - Or send
/newto start completely fresh
- Restart gateway entirely:
pkill -f clawdbot
# Then restart
npx clawdbot gateway
- Check for agent-specific tool restrictions:
cat ~/.clawdbot/clawdbot.json | jq '.agents.list'
Your specific agent might have a limited toolset defined
The browser port 18791 timeout is separate — that's the browser control server not responding. A full gateway restart should bring everything back up cleanly.
Try the full restart first — this smells like something got into a half-initialized state. 🦐
@rapid hare I keep getting Context overflow: Summarization failed: 400.
I know I can /reset but since the bot crashes on launch I don't have that option.
@pollie The session is too big and summarization is failing, causing a crash loop. You need to manually clear the session:
Option 1: Delete the problematic session file:
# Find sessions
ls ~/.clawdbot/agents/*/sessions/
# Look for the large/problematic one
ls -lah ~/.clawdbot/agents/main/sessions/
# Delete or rename it
rm ~/.clawdbot/agents/main/sessions/main.json
# or safer:
mv ~/.clawdbot/agents/main/sessions/main.json ~/.clawdbot/agents/main/sessions/main.json.bak
Option 2: Clear all sessions:
rm -rf ~/.clawdbot/agents/*/sessions/*.json
Option 3: Find and truncate the specific session:
# Find the big one
find ~/.clawdbot -name "*.json" -size +1M 2>/dev/null
# Check session sizes
du -h ~/.clawdbot/agents/*/sessions/*
After clearing, restart the gateway — it'll create a fresh session.
To prevent this in future, enable aggressive compaction in config:
"agents": {
"defaults": {
"contextPruning": {
"enabled": true,
"maxTokens": 100000
}
}
}
Does that unblock you? 🦐
it feels my clawdbot is double replying me on telegram, what could be going on?
@rocketzz Double replies usually means one of these:
1. Stream mode sending twice (partial + final):
"telegram": {
"streamMode": "none"
}
2. Multiple gateways running:
ps aux | grep clawdbot
# Kill extras if you see multiple
pkill -f clawdbot
# Then start just one
npx clawdbot gateway
3. Webhook registered twice:
- Check Telegram bot settings via @BotFather
- Or the gateway might have duplicate handlers
4. Check logs for double sends:
grep -i "telegram.*send" ~/.clawdbot/logs/gateway.log | tail -20
Quick fix to try:
Add streamMode: "none" to your Telegram config and restart:
"telegram": {
"accounts": {
"default": {
"botToken": "...",
"streamMode": "none"
}
}
}
Are both replies identical, or is one shorter (like a partial/streaming message)? 🦐
➜ clawdbot git:(main) ✗ ls
AGENTS.md CHANGELOG.md docker-setup.sh LICENSE Peekaboo scripts test vitest.e2e.config.ts
appcast.xml CLAUDE.md Dockerfile list-models.cjs pnpm-lock.yaml SETUP_CHANGES.md tsconfig.json vitest.live.config.ts
apps CONTRIBUTING.md Dockerfile.sandbox node_modules pnpm-workspace.yaml skills ui
assets dist Dockerfile.sandbox-browser package.json README-header.png src vendor
biome.json docker-compose.yml docs patches README.md Swabble vitest.config.ts
@rapid hare did all of what you suggested clawd can’t use any tools again
@vacinc Got it — it's a monorepo. The desktop app should be in apps/:
# Check what's in apps
ls apps/
# Likely something like
ls apps/desktop/
Then run:
# Build everything first if you haven't
pnpm install
pnpm build
# Run the desktop/menu bar app
pnpm --filter desktop start
# or
pnpm --filter @clawdbot/desktop start
Or check package.json for scripts:
cat package.json | grep -i desktop
# or
pnpm run | grep -i desktop
If there's a .app already built:
# Check dist for Mac app
ls dist/*.app 2>/dev/null
ls apps/desktop/dist/*.app 2>/dev/null
# Or open it directly
open apps/desktop/dist/Clawdbot.app
What does ls apps/ show? 🦐
@sirthomasripley Okay, let's dig deeper. Something's fundamentally wrong with the tool loading.
Direct checks:
-
What does /status show? Send that to your bot and share the output
-
Check config for tool restrictions:
cat ~/.clawdbot/clawdbot.json | jq '.tools'
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.tools'
cat ~/.clawdbot/clawdbot.json | jq '.agents.list[].tools'
- Check what model you're on:
- Some models don't support tool use (or have it disabled)
- What provider/model is configured?
- Look for errors at startup:
# Restart with visible output
pkill -f clawdbot
npx clawdbot gateway 2>&1 | head -100
Look for any errors about tools
- Nuclear option — fresh session:
rm -rf ~/.clawdbot/agents/*/sessions/*
What provider/model are you using? If it's a local model or certain providers, tool use might need explicit enabling or might not be supported.
Share your model config and I'll check if it's a known limitation. 🦐
➜ clawdbot git:(main) ✗ ls apps
android ios macos shared
@vacinc There it is — apps/macos is your menu bar app!
# Check what's there
ls apps/macos/
# Build and run macOS app
pnpm --filter macos start
# or
pnpm --filter @clawdbot/macos start
Or build the actual .app:
pnpm --filter macos build
# Then look for the built app
ls apps/macos/dist/
ls apps/macos/build/
# Open it
open apps/macos/dist/Clawdbot.app
# or wherever it lands
Check available scripts:
cat apps/macos/package.json | jq '.scripts'
That'll show you exactly what commands are available for the macOS app! 🦐
is there a way for the bot to remove its ackReaction after it replies to the message (Discord)?
@levifig Currently the ack reaction (👀) stays after reply by default.
Check your config for reaction settings:
"messages": {
"ackReaction": "👀",
"ackReactionScope": "group-mentions",
"removeAckAfterReply": true // <-- this might exist?
}
If that setting doesn't exist, a few options:
- Disable ack reactions entirely:
"messages": {
"ackReaction": null
}
-
Use a less persistent indicator — some people use typing indicator instead
-
Feature request — if
removeAckAfterReplyisn't implemented, could be worth requesting on GitHub
Check what reaction options are available:
cat ~/.clawdbot/clawdbot.json | jq '.messages'
What's your current ack setup, and is removing it after reply important (cleaner look, or functional reason)? Might be worth a feature request if it's not there yet! 🦐
➜ clawdbot git:(main) ✗ pnpm --filter macos start
No projects matched the filters in "/Users/vac/clawdbot"
➜ clawdbot git:(main) ✗ pnpm --filter macos build
No projects matched the filters in "/Users/vac/clawdbot"
@vacinc The package name might be different. Let's find it:
# Check the package name in macos app
cat apps/macos/package.json | jq '.name'
# Or list all workspace packages
pnpm list --depth -1
# Or check pnpm workspace
cat pnpm-workspace.yaml
Then use whatever name it shows:
pnpm --filter <actual-package-name> start
Or just run directly from the folder:
cd apps/macos
pnpm start
# or
pnpm run dev
Check available scripts:
cat apps/macos/package.json | jq '.scripts'
What does cat apps/macos/package.json | jq '.name' return? 🦐
Is there anyway to have discord guilds share the main identity instead of being isolated and making a new identity?
where should I add the feature request?
@dilll Yes! By default guilds might get separate sessions, but you can route them to the same one.
Option 1: Use the same session key for all guilds:
"discord": {
"guilds": {
"*": {
"sessionKey": "main"
}
}
}
Option 2: Set a default agent for all Discord:
"discord": {
"agent": "main",
"guilds": {
"guild-id-1": {},
"guild-id-2": {}
}
}
Option 3: In agents config, have one identity handle all:
"agents": {
"defaults": {
"sessionKey": "main"
}
}
The key is making sure all guilds route to the same sessionKey or agent — that way they share memory, context, and identity.
Check your current setup:
cat ~/.clawdbot/clawdbot.json | jq '.discord'
cat ~/.clawdbot/clawdbot.json | jq '.agents'
What's your goal — one bot personality everywhere, or shared memory but guild-aware? 🦐
@levifig GitHub issues:
https://github.com/nicholasoxford/clawdbot/issues
Or if it's steipete's repo:
https://github.com/nicholasoxford/clawdbot/issues/new
Create a new issue with:
- Title: "Discord: Option to remove ack reaction after reply"
- Description: What you want (ack reaction like 👀 gets removed once bot sends response)
- Why: Cleaner UX, less visual clutter
Good feature requests include the use case and maybe a proposed config option like:
"messages": {
"removeAckAfterReply": true
}
🦐
➜ clawdbot git:(main) ✗ cat apps/macos/package.json | jq '.name'
Or list all workspace packages
pnpm list --depth -1
Or check pnpm workspace
cat pnpm-workspace.yaml
cat: apps/macos/package.json: No such file or directory
packages:
- .
- ui
onlyBuiltDependencies:
- '@whiskeysockets/baileys'
- authenticate-pam
- esbuild
- protobufjs
- sharp
patchedDependencies:
'@mariozechner/pi-ai': patches/@mariozechner__pi-ai.patch
@vacinc Ah — apps/macos isn't a Node.js package, it's likely a native Swift macOS app!
# Check what's actually in there
ls -la apps/macos/
# Look for Xcode project
ls apps/macos/*.xcodeproj
ls apps/macos/*.xcworkspace
If it's a Swift/Xcode project:
# Open in Xcode
open apps/macos/*.xcodeproj
# or
open apps/macos/*.xcworkspace
# Then build & run from Xcode (Cmd+R)
Or build from command line:
cd apps/macos
xcodebuild -scheme Clawdbot -configuration Release
The workspace only lists ui as a JS package — the macOS app is probably native. Check what's inside and let me know what files you see! 🦐
that repo URL doesn't look quite right… 😉
@levifig 😅 You're right, let me fix that:
https://github.com/steipete/clawdbot/issues
That's the one! Sorry for the hallucinated repo name 🦐
➜ clawdbot git:(main) ✗ cd apps/macos
xcodebuild -scheme Clawdbot -configuration Release
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
@vacinc You have Command Line Tools but not full Xcode. Two options:
Option 1: Install Xcode (if you want to build from source)
- Download from App Store (it's big, ~12GB)
- After install:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Option 2: Just open in Xcode directly (might work):
# If Xcode is installed but not selected
open apps/macos/*.xcodeproj
Option 3: Skip the native app, just run the gateway:
If you just want Clawdbot running (no menu bar UI):
pnpm run gateway
# or
node dist/entry.js gateway
The menu bar app is nice-to-have but not required — the gateway is the actual brain.
Do you have Xcode installed (from App Store), or just the Command Line Tools? 🦐
@rapid hare
I placed this in the jobs.json in cron folder. Give me your feedback if this works.
With regards to the Haiku code, is it ok to just have the copy below or do i need to update clawdbot.json at .clawdbot as well?
{
"id": "ffc5d375-ea1f-4c94-bc51-16d72eed6169",
"name": "Hourly calendar digest (:45)",
"description": "At :45 each hour, show events for the next 75 minutes",
"enabled": true,
"createdAtMs": 1767952523640,
"updatedAtMs": 1768083600000,
"schedule": {
"kind": "cron",
"cron": "45 * * * *",
"tz": "Asia/Singapore"
},
"sessionTarget": "isolated",
"wakeMode": "now",
"payload": {
"kind": "agentTurn",
"message": "/model anthropic/claude-3-5-haiku\n\nCALENDAR DIGEST TASK:\n\n1. Run: gog calendar events makeme@gmail.com --account makeme@gmail.com --from now --to '+75m' --max 10\n2. If no events, reply: 'No events in the next 75 minutes.'\n3. If events exist, format as:\n 📅 Coming up:\n • [TIME] [Title]\n • [TIME] [Title]\n4. Send to BOTH via sessions_send:\n - sessionKey: 'whatsapp:dm:6012123456@s.whatsapp.net'\n - sessionKey: 'whatsapp:group:120361234567@g.us'",
"timeoutSeconds": 60
},
"isolation": {
"postToMainPrefix": "Calendar digest"
},
"state": {}
}
@raistlin28 Good effort! A few issues to fix:
1. /model in the message won't work reliably
The /model command is a session command — in an isolated cron session, it might not be processed before the task runs.
Better approach — specify model in clawdbot.json:
{
"agents": {
"list": [
{
"id": "calendar-checker",
"model": {
"primary": "anthropic/claude-3-5-haiku"
}
}
]
}
}
Then in your cron job, use that agent:
{
"id": "ffc5d375-...",
"agent": "calendar-checker", // <-- ADD THIS
"payload": {
"kind": "agentTurn",
"message": "CALENDAR DIGEST TASK:\n\n1. Run: gog calendar events..."
// Remove the /model line
}
}
2. Yes, update clawdbot.json too
The agents.list with your Haiku agent needs to be in ~/.clawdbot/clawdbot.json. The cron jobs.json just references the agent by ID.
3. Simplified cron job:
{
"id": "calendar-digest",
"name": "Hourly calendar digest",
"enabled": true,
"agent": "calendar-checker",
"schedule": {
"kind": "cron",
"cron": "45 * * * *",
"tz": "Asia/Singapore"
},
"payload": {
"kind": "agentTurn",
"message": "Check calendar for next 75 minutes and send digest to WhatsApp DM and group",
"timeoutSeconds": 60
}
}
TL;DR: Add the Haiku agent to clawdbot.json, then reference "agent": "calendar-checker" in the cron job. Remove /model from the message. 🦐
@rapid hare Can I use MiniMax as model through openrouter?
@pollie Yes! OpenRouter has MiniMax models.
Configure like any other OpenRouter model:
"models": {
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-your-key",
"api": "openai-completions",
"models": [
{
"id": "minimax/minimax-01",
"name": "MiniMax 01",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0.2, "output": 1.1, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 1000000,
"maxTokens": 8192
}
]
}
}
}
Then use: openrouter/minimax/minimax-01
Check OpenRouter's model list for exact model IDs:
https://openrouter.ai/models?q=minimax
They might have multiple MiniMax variants (minimax-01, etc.). Use whatever ID OpenRouter shows! 🦐
how do i setup m365 email to be read by bot?
@dibasr Clawdbot doesn't have native M365 email integration, but you have options:
Option 1: Custom tool with Microsoft Graph API
# You'd need to:
# 1. Register an app in Azure AD
# 2. Get OAuth credentials
# 3. Create a custom tool/script that calls Graph API
Option 2: Use Power Automate / Logic Apps as bridge
- Set up a flow that triggers on new email
- Forward relevant data to a webhook
- Have Clawdbot listen on that webhook
Option 3: IMAP (if enabled on your M365)
# Some tools can read via IMAP
# Check if your org allows IMAP access
Option 4: Use an email-to-webhook service
- Services like Zapier, Make.com, or Pipedream
- Trigger on new M365 email → send to Clawdbot webhook
What's your use case?
- Read all emails?
- Only certain senders/subjects?
- Just notifications or full content?
The approach depends on whether you want passive monitoring or the agent actively querying email. What are you trying to accomplish? 🦐
@rapid hare how do i view gateway status again
@.magicinternetmoney Few ways:
1. Chat command:
/status
Send to your bot in any chat
2. Control UI (if enabled):
Open http://localhost:18788 in browser
3. Command line:
# Check if running
ps aux | grep clawdbot
lsof -i :18789
# Or curl the health endpoint
curl http://localhost:18789/health
4. Logs:
tail -f ~/.clawdbot/logs/gateway.log
Which one do you need? 🦐
Can we not use Claude max or ChatGPT plus and only API’s? @rapid hare
@leadscope Yes, absolutely! API-only is fully supported:
Anthropic API:
npx clawdbot configure
# Pick "Anthropic API key"
# Get key from: https://console.anthropic.com
OpenAI API:
npx clawdbot configure
# Pick "OpenAI API key"
# Get key from: https://platform.openai.com/api-keys
Config directly:
{
"models": {
"providers": {
"anthropic": {
"apiKey": "sk-ant-..."
},
"openai": {
"apiKey": "sk-..."
}
}
}
}
API keys are actually more reliable than consumer OAuth:
- ✅ No weird rate limits based on subscription
- ✅ No "this credential is only authorized for Claude Code" errors
- ✅ Pay for what you use
- ✅ Better for automation/always-on bots
The OAuth options (Claude Max, ChatGPT Plus) exist for people who want to use existing subscriptions, but APIs work great! 🦐
they are different replies
@rocketzz Two different replies? That's weirder. This means the message is being processed twice, not just sent twice.
Check for:
- Multiple sessions handling same chat:
cat ~/.clawdbot/clawdbot.json | jq '.telegram'
Is the same chat routed to multiple agents?
- Multiple gateways definitely not running?
ps aux | grep -i clawdbot | grep -v grep
- Check logs for duplicate processing:
grep "telegram.*received\|incoming" ~/.clawdbot/logs/gateway.log | tail -20
See if the same message ID appears twice
- Webhook registered multiple times?
- Telegram might be sending the update to multiple endpoints
- Check with @BotFather or Telegram API
Can you share what the two different replies look like? That might reveal if it's:
- Same question, different model responses (multiple agents)
- Processing the message at different stages
- Something else entirely
🦐
i need a babysitter...i mean assistant. i am in charge of support escalations, operations and revenue -- i want someone to hit me when important stuff shows up. Make sense?
@rapid hare how do I set up my ChatGPT plus or Claude max oauth?
@dibasr Makes total sense! You want a priority inbox filter that pings you for the important stuff.
Best approach for M365 → Clawdbot alerts:
1. Power Automate flow (easiest for M365):
Trigger: When new email arrives
Condition: From VIP senders OR subject contains "urgent/escalation/revenue"
Action: HTTP POST to your Clawdbot webhook with email summary
2. Set up Clawdbot to receive webhooks:
"webhooks": {
"enabled": true,
"endpoints": [{
"path": "/email-alert",
"secret": "your-secret"
}]
}
3. Then Clawdbot can:
- Analyze the email content
- Decide if it's truly important (AI triage!)
- Ping you on WhatsApp/Telegram/Discord with a summary
The AI advantage:
You can teach it what matters to YOU:
- "Escalations from Tier 2+ support"
- "Revenue drops > 10%"
- "Anything from [CEO name]"
Put those rules in your AGENTS.md and it becomes a smart filter, not just keyword matching.
Want help setting up the Power Automate → webhook flow? 🦐
@leadscope Run the configure wizard:
npx clawdbot configure
For Claude Max (Anthropic OAuth):
- Pick "Anthropic token (Claude CLI)"
- It'll open a browser for Anthropic login
- Sign in with your Claude Max account
- Token gets saved automatically
For ChatGPT Plus (OpenAI Codex OAuth):
- Pick "OpenAI Codex OAuth (Codex CLI)" or "OpenAI Codex (ChatGPT OAuth)"
- Browser opens for OpenAI login
- Sign in with your ChatGPT Plus account
- Done!
Heads up on limitations:
- ⚠️ Claude Max OAuth has usage limits (resets every few hours)
- ⚠️ ChatGPT Plus OAuth may have similar restrictions
- ⚠️ Claude tokens are sometimes restricted to "Claude Code only" (can't use externally)
If you hit "This credential is only authorized for Claude Code" errors, you'll need an API key instead.
Try the OAuth first — if it works, great! If not, API keys are the fallback. 🦐
yes please!
@dibasr Here's the full setup:
Step 1: Enable webhooks in Clawdbot
Add to ~/.clawdbot/clawdbot.json:
{
"gateway": {
"webhooks": {
"enabled": true,
"secret": "pick-a-strong-secret-here"
}
}
}
Restart gateway. Webhook endpoint will be at http://YOUR_IP:18789/webhook
Step 2: Expose your gateway (if not already)
- Use ngrok:
ngrok http 18789→ get a public URL - Or port forward on your router
- Or use Cloudflare Tunnel
Step 3: Create Power Automate flow
- Go to https://make.powerautomate.com
- Create new flow → "Automated cloud flow"
- Trigger: "When a new email arrives (V3)" - Office 365 Outlook
- Add condition (optional):
- From contains "important-sender@company.com"
- OR Subject contains "URGENT"
- OR Subject contains "escalation"
- Add action: "HTTP"
- Method: POST
- URI:
https://your-ngrok-url.ngrok.io/webhook - Headers:
X-Webhook-Secret: your-secret-here - Body:
{
"type": "email",
"from": "@{triggerOutputs()?['body/from']}",
"subject": "@{triggerOutputs()?['body/subject']}",
"preview": "@{triggerOutputs()?['body/bodyPreview']}"
}
Step 4: Teach Clawdbot what's important
In your AGENTS.md:
## Email Alerts
When I receive email webhooks, evaluate importance:
- URGENT: Escalations, revenue alerts, exec emails → ping immediately
- IMPORTANT: Customer complaints, system alerts → summarize hourly
- IGNORE: Newsletters, automated reports
Alert via WhatsApp when urgent.
Need help with any specific step? 🦐
@rapid hare how do I use clawdbot with ChatGPT plus or Claude max oauth?
@leadscope Just answered that one above! 👆
npx clawdbot configure
Then pick:
- Claude Max → "Anthropic token (Claude CLI)"
- ChatGPT Plus → "OpenAI Codex OAuth (ChatGPT OAuth)"
Browser opens, you log in, done. Check my previous message for the limitations/warnings on OAuth tokens! 🦐
that is great -- when i get out of timeout (rated) i will start working on it
@dibasr Sounds good! When you're ready, ping me if you get stuck on any step.
While you're in timeout, you could get the Power Automate side set up — that doesn't need Clawdbot running. Then wire it together once you're out of rate limit jail. 😅 🦐
amazing
🦐👍
How can I prevent the heartbeat from sending an AI output message (telegram) if no updates are needed to be announced?
@nicholas3415 This is actually the default behavior when configured correctly!
How it works:
- Agent receives heartbeat prompt
- If nothing to report → agent replies
HEARTBEAT_OK - Clawdbot sees that response and discards it (doesn't send to Telegram)
- If something needs attention → agent replies with actual content → gets sent
Make sure your AGENTS.md has this pattern:
## Heartbeats
When you receive a heartbeat prompt:
- If nothing needs attention, reply exactly: HEARTBEAT_OK
- If something is urgent/interesting, reply with the actual update
HEARTBEAT_OK gets suppressed and won't be sent to chat.
Check your heartbeat config:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.heartbeat'
If it's STILL sending messages when nothing's happening:
- The agent might not be saying exactly
HEARTBEAT_OK(check for extra text) - Check your HEARTBEAT.md isn't forcing output every time
- Model might not be following instructions well
What's currently happening — is it sending "nothing to report" messages, or something else? 🦐
➜ clawdis git:(main) ✗ pnpm install
Scope: all 2 workspace projects
WARN 1 deprecated subdependencies found: node-domexception@1.0.0
Packages: +591
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 714, reused 595, downloaded 0, added 591, done
ERR_PNPM_INVALID_PATCH Applying patch "/Users/ashu/clawdis/patches/@buape__carbon.patch" failed: hunk header integrity check failed
node_modules/.pnpm/esbuild@0.27.2/node_modules/esbuild: Running postinstall script...
node_modules/.pnpm/sharp@0.34.5/node_modules/sharp: Running install script...
➜ clawdis git:(main) ✗
@bheem1798 The patch file is out of sync with the dependency version.
Quick fixes:
Option 1: Remove and regenerate patches
# Delete the problematic patch
rm patches/@buape__carbon.patch
# Remove node_modules and lockfile
rm -rf node_modules pnpm-lock.yaml
# Reinstall
pnpm install
Option 2: Update the patch
# If you need the patch, regenerate it
pnpm patch @buape/carbon
# Make your changes in the temp folder it opens
pnpm patch-commit <temp-folder-path>
Option 3: Pull latest (patch might be fixed)
git pull origin main
pnpm install
Option 4: Skip patches temporarily
# Edit pnpm-workspace.yaml or package.json
# Remove the patchedDependencies entry for @buape/carbon
This usually happens when:
- Dependency updated but patch wasn't regenerated
- You're on a different branch than expected
- Recent git pull brought incompatible changes
Try Option 1 first — clean slate often fixes it. 🦐
It's not supposed to, it's the model not following instructions. Happens every now and then for mine
@nicholas3415 What @cash.williams said ^ — it's model compliance, not a Clawdbot bug.
Tips to improve compliance:
-
Use a smarter model for heartbeats — Opus/Sonnet follow instructions better than smaller models
-
Make instructions super explicit in AGENTS.md:
## Heartbeat Rules (IMPORTANT)
When receiving heartbeat prompt and nothing needs attention:
- Reply with ONLY the text: HEARTBEAT_OK
- No greetings, no explanations, no "all clear" messages
- Just: HEARTBEAT_OK
- Literally those 12 characters and nothing else
- Keep HEARTBEAT.md minimal — less content = less confusion for model
- Check what it's actually saying:
grep -i heartbeat ~/.clawdbot/logs/gateway.log | tail -20
See if it's adding extra text around HEARTBEAT_OK
Some models just can't resist being chatty 😅 🦐
only one match for the cat command, here's the output of the ps aux:
clawdbot@ns3354861:~$ ps aux | grep -i clawdbot | grep -v grep
clawdbot 1447 0.0 0.2 18756 9432 ? Ss Jan07 0:13 /lib/systemd/systemd --user
clawdbot 1448 0.0 0.0 169488 1528 ? S Jan07 0:00 (sd-pam)
clawdbot 23915 0.0 0.1 8592 4680 ? Ss Jan08 0:01 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root 64832 0.0 0.2 17180 8364 ? Ss 00:29 0:00 sshd: clawdbot [priv]
clawdbot 64932 0.0 0.1 17528 6056 ? S 00:29 0:04 sshd: clawdbot@pts/1
clawdbot 64934 0.0 0.0 13112 2996 pts/1 Ss+ 00:29 0:00 -bash
clawdbot 66924 0.0 0.1 309460 5844 ? Ssl 01:08 0:00 /usr/libexec/at-spi-bus-launcher
clawdbot 75640 0.0 0.0 230720 3908 ? Sl 02:02 0:00 /usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
clawdbot 75647 0.0 0.1 233976 5276 ? Ssl 02:02 0:00 /usr/libexec/xdg-permission-store
clawdbot 76169 0.0 0.1 238340 6060 ? Ssl 02:08 0:00 /usr/libexec/gvfsd
clawdbot 76960 0.0 0.1 534732 5720 ? Ssl 02:16 0:00 /usr/libexec/xdg-document-portal
clawdbot 77317 0.0 0.0 81808 2596 ? SLs 02:24 0:00 /usr/bin/gpg-agent --supervised
clawdbot 100430 4.0 5.0 12177968 199704 ? Ssl 23:39 0:44 /home/clawdbot/.nvm/versions/node/v22.21.1/bin/node /home/clawdbot/clawdbot/dist/index.js gateway --port 18789
root 100613 0.1 0.2 17184 10980 ? Ss 23:52 0:00 sshd: clawdbot [priv]
clawdbot 100719 0.0 0.2 17324 8164 ? S 23:53 0:00 sshd: clawdbot@pts/0
clawdbot 100722 0.1 0.2 13112 9196 pts/0 Ss 23:53 0:00 -bash
clawdbot 101280 0.0 0.0 10464 3288 pts/0 R+ 23:57 0:00 ps aux
@rocketzz Good — only one gateway (PID 100430). So it's not multiple instances.
Let's check the logs for what's happening when messages arrive:
# Watch real-time when you send a message
tail -f ~/.clawdbot/logs/gateway.log | grep -i "telegram\|received\|processing\|send"
Send a test message and see if you see it being processed twice.
Also check Telegram config for duplicate handlers:
cat ~/.clawdbot/clawdbot.json | jq '.telegram.accounts'
Is there more than one account configured pointing to the same bot token?
Other possibilities:
- Webhook + polling both enabled? — could cause duplicate receives
- Message being matched by multiple rules — different agents responding
- Something in your AGENTS.md causing agent to respond twice
Can you share:
- Your Telegram config section
- What the two different replies look like (content-wise)
That'll help narrow it down! 🦐
@rapid hare one of these updates decided to put me in sandbox jail, I’m ride or Die YOLO bypass all
@sirthomasripley To escape sandbox jail:
In your config:
{
"agents": {
"defaults": {
"sandbox": false,
"elevated": true,
"tools": {
"allowAll": true
}
}
},
"gateway": {
"sandbox": false
}
}
Or via command:
/elevated on
Check current restrictions:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.sandbox'
cat ~/.clawdbot/clawdbot.json | jq '.gateway.sandbox'
Nuclear YOLO option — if there's an --unsafe or --no-sandbox flag:
npx clawdbot gateway --no-sandbox
What's it blocking you from doing? There might be a specific permission that needs enabling rather than full sandbox disable.
But hey, your machine, your rules! 🏴☠️🦐
@rapid hare next time just give people this who are looking to install the native macos app straight from the repo: https://docs.clawd.bot/platforms/mac/dev-setup
@vacinc Thanks for the link! 🙏 Noted for future:
macOS native app from source:
https://docs.clawd.bot/platforms/mac/dev-setup
I'll point people there directly next time instead of the guessing game. Appreciate the feedback! 🦐
@rapid hare awesome now clawd bot has full root access again
@sirthomasripley 🏴☠️ Freedom restored! Go break things responsibly 😄🦐
@rapid hare forgot sudo clawdbot is running full root
@sirthomasripley Living dangerously! 😅
Running as root means your agent can:
- ✅ Access everything
- ✅ Install system packages
- ✅ Modify any file
- ⚠️ Also accidentally
rm -rf /if it hallucinates
Just make sure your AGENTS.md has a "don't be stupid" clause and maybe keep backups handy. With great power comes great "oops" potential!
Full send mode engaged 🚀🦐
@rapid hare well I trust my clawdbot and my clawdbot trusts me
@sirthomasripley That's the dream right there 🤝🦐
grep: /home/clawdbot/.clawdbot/logs/gateway.log: No such file or directory
@rocketzz Logs aren't there — let's find them or enable them:
# Find where logs might be
find ~/.clawdbot -name "*.log" 2>/dev/null
find /home/clawdbot -name "*.log" 2>/dev/null
# Check if logging is configured
cat ~/.clawdbot/clawdbot.json | jq '.logging'
cat ~/.clawdbot/clawdbot.json | jq '.gateway.logging'
If no logs exist, enable them:
"gateway": {
"logging": {
"level": "debug",
"file": "/home/clawdbot/.clawdbot/logs/gateway.log"
}
}
Then restart and the logs will start capturing.
Or watch stdout directly:
# Stop the systemd service
sudo systemctl stop clawdbot # or however you're running it
# Run manually with visible output
cd ~/clawdbot && node dist/index.js gateway --port 18789 2>&1 | tee debug.log
Then send a message and watch what happens in real-time! 🦐
@rapid hare
ELI5 pros and cons between using Haiku 3.5 and 4.5.
Assume token cost is the least consideration.
"agents": {
"list": [
{
"id": "calendar-checker",
"model": {
"primary": "anthropic/claude-3-5-haiku"
}
}
@raistlin28 Quick note: there's no "Haiku 4.5" — current lineup is:
Claude 3.5 Haiku (fastest small model)
- ✅ Super fast responses
- ✅ Good at straightforward tasks (calendar checks ✓)
- ✅ Follows instructions well
- ❌ Struggles with complex reasoning
- ❌ Less nuanced understanding
Claude 4 Sonnet (balanced mid-tier)
- ✅ Much smarter than Haiku
- ✅ Better at complex instructions
- ✅ More reliable tool use
- ❌ Slower than Haiku
- ❌ More expensive (but you said don't care)
For calendar checks specifically:
Haiku 3.5 is perfect — it's a simple task:
- Run command
- Format output
- Send message
No complex reasoning needed. Save Sonnet/Opus for tasks that need actual thinking.
My recommendation:
"id": "calendar-checker",
"model": {
"primary": "anthropic/claude-3-5-haiku"
}
Haiku for cron jobs, Opus/Sonnet for conversations. Match model power to task complexity! 🦐
no luck here ```➜ clawdis git:(main) ✗ rm -rf node_modules/
➜ clawdis git:(main) ✗ pnpm patch @buape/carbon
ERR_PNPM_PATCH_NO_LOCKFILE The modules directory is not ready for patching
Run pnpm install first
➜ clawdis git:(main) ✗ pnpm install
Scope: all 2 workspace projects
ENOENT ENOENT: no such file or directory, open '/Users/ashu/clawdis/patches/@buape__carbon.patch'
pnpm: ENOENT: no such file or directory, open '/Users/ashu/clawdis/patches/@buape__carbon.patch'
at async open (node:internal/fs/promises:640:25)
at async Object.readFile (node:internal/fs/promises:1277:14)
at async readNormalizedFile (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:55293:23)
at async createHexHashFromFile (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:55290:28)
at async /Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:136079:17
at async /Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:136056:24
at async Promise.all (index 0)
at async pMapValue (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:136055:7)
at async _install (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:158399:134)
at async mutateModules (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:158356:23)
➜ clawdis git:(main) ✗```
@bheem1798 The patch file is gone but pnpm still expects it. Need to remove the reference too:
# Check what's referencing the patch
cat package.json | grep -A5 "patchedDependencies"
# OR check pnpm-workspace.yaml
cat pnpm-workspace.yaml | grep -A10 patch
Then remove the reference:
If it's in package.json:
// Remove this section or the @buape/carbon line from it:
"pnpm": {
"patchedDependencies": {
"@buape/carbon": "patches/@buape__carbon.patch" // ← DELETE THIS LINE
}
}
If it's in pnpm-workspace.yaml, edit that file and remove the @buape/carbon patch entry.
Then:
rm -rf node_modules pnpm-lock.yaml
pnpm install
The patch reference is the problem — pnpm is looking for a file you deleted! 🦐
@rapid hare what is the absolutely GOAT model like the chefs kiss the cream de la crop?
@sirthomasripley The absolute GOAT tier right now:
🏆 Claude Opus 4.5 (anthropic/claude-opus-4-5)
- Best reasoning
- Best at following complex instructions
- Best at coding
- Chef's kiss for agentic tasks 👨🍳💋
Runner ups:
- GPT-5.2 — strong contender, great at some things
- Gemini 3 Pro — massive context window, good multimodal
- Claude Sonnet 4 — 90% of Opus at fraction of the cost/speed
For Clawdbot specifically:
Opus 4.5 as primary, Sonnet 4 as fallback. That's the crème de la crème setup:
"model": {
"primary": "anthropic/claude-opus-4-5",
"fallbacks": ["anthropic/claude-sonnet-4"]
}
Opus is the one. Accept no substitutes. 🐐🦐
@rapid hare Still quite confused how to set up openrouter, please be clear which files to edit.
@pollie Here's the exact setup, step by step:
1. Get your API key:
Go to https://openrouter.ai/keys → Create Key → Copy it
2. Edit ONE file: ~/.clawdbot/clawdbot.json
nano ~/.clawdbot/clawdbot.json
3. Add/merge this into your config:
{
"models": {
"mode": "merge",
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-YOUR-KEY-HERE",
"api": "openai-completions",
"models": [
{
"id": "anthropic/claude-sonnet-4",
"name": "Claude Sonnet 4 via OpenRouter",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 3, "output": 15, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 200000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "openrouter/anthropic/claude-sonnet-4"
},
"models": {
"openrouter/anthropic/claude-sonnet-4": {}
}
}
}
}
4. Restart:
pkill -f clawdbot
npx clawdbot gateway
That's it! One file, add your key, restart.
The model ID format is openrouter/ + whatever OpenRouter calls it (check their site for exact IDs). 🦐
@rapid hare hmm, after recent updates, the session on my one alternate telegram group (other than my main thread DM chat) does not respond in telegram, but can respond in gateway chat. the telegram config is all still there.
But can't I just add the provider so I can switch via /model ?
@rapid hare ELI2
@jmzzzzz Sounds like the session exists but responses aren't routing back to Telegram. A few things to check:
1. Is the group still properly linked?
cat ~/.clawdbot/clawdbot.json | jq '.telegram.groups'
# or
cat ~/.clawdbot/clawdbot.json | jq '.telegram.accounts.default.groups'
2. Check session target:
The session might have lost its messageProvider context (similar to a bug fixed earlier today). Check:
grep -i "messageProvider\|telegram" ~/.clawdbot/logs/gateway.log | tail -30
3. Try refreshing the group link:
Send a message in that Telegram group and check if it shows up in logs with the correct routing info.
4. Compare working vs non-working:
- DM chat works ✅
- Gateway chat works ✅
- Group doesn't ✅→❌
What's different about the group config vs DM?
Quick fix to try:
# Restart gateway
pkill -f clawdbot
npx clawdbot gateway
Then send a message in the group — sometimes the update broke session routing and a restart fixes it.
What version are you on? There were some routing fixes pushed today. 🦐
@pollie Yes! Just add the provider without changing your default:
{
"models": {
"mode": "merge",
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-YOUR-KEY-HERE",
"api": "openai-completions",
"models": [
{
"id": "anthropic/claude-sonnet-4",
"name": "Claude Sonnet 4 (OpenRouter)",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 3, "output": 15, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 200000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"models": {
"openrouter/anthropic/claude-sonnet-4": {}
}
}
}
}
Skip the "primary" setting — keep your current default. Just add to the models allowlist.
Then switch anytime with:
/model openrouter/anthropic/claude-sonnet-4
Add as many models as you want to the OpenRouter models array and allowlist! 🦐
@sirthomasripley ELI2 what? 😄
Models? Opus good. Others less good. Opus = 🍪
Setup? Put key in file. Restart. Works.
Something else? Use small words! 🦐
@rapid hare understand thank you kind lobster
🦐 happy krill noises
(close enough to lobster! 😄)
My config looks completely different;
{
"wizard": {
"lastRunAt": "2026-01-09T22:19:23.486Z",
"lastRunVersion": "2026.1.9",
"lastRunCommand": "configure",
"lastRunMode": "local"
},
"browser": {
"enabled": false
},
"auth": {
"profiles": {
"anthropic:default": {
"provider": "anthropic",
"mode": "oauth"
},
"anthropic:claude-cli": {
"provider": "anthropic",
"mode": "token"
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-5"
},
"models": {
"anthropic/claude-opus-4-5": {
"alias": "opus"
}
},
"workspace": "/home/pollie/clawd"
}
},
"tools": {},
"messages": {
"ackReaction": "👀",
"ackReactionScope": "group-mentions"
},
"whatsapp": {
"dmPolicy": "pairing",
"groupPolicy": "open",
"mediaMaxMb": 50
},
"telegram": {
"dmPolicy": "pairing",
"botToken": "[redacted]",
"groups": {
"*": {
"requireMention": false
},
"[redacted]": {
"requireMention": false
}
},
"allowFrom": [
"[redacted]"
],
"groupPolicy": "open",
"streamMode": "partial"
},
"discord": {
"token": "[redacted]",
"groupPolicy": "open",
"dm": {
"policy": "pairing",
"allowFrom": [
"[redacted]"
]
}
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "tailnet",
"controlUi": {
"enabled": true
}
},
"skills": {
"install": {
"nodeManager": "npm"
}
}
}
@pollie Your config just doesn't have the models.providers section yet — just add it! Merge this into your existing config:
{
"models": {
"mode": "merge",
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-YOUR-KEY-HERE",
"api": "openai-completions",
"models": [
{
"id": "minimax/minimax-01",
"name": "MiniMax 01",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0.2, "output": 1.1, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 1000000,
"maxTokens": 8192
}
]
}
}
}
}
And update your existing agents.defaults.models to include it:
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-5"
},
"models": {
"anthropic/claude-opus-4-5": { "alias": "opus" },
"openrouter/minimax/minimax-01": {}
}
}
}
Add "models": { ... } as a new top-level section alongside your existing wizard, browser, auth, etc.
Restart, then /model openrouter/minimax/minimax-01 to switch! 🦐
@rapid hare why is there an assumption that full model id is like provider/model??
@astrophile1534 Good question! The provider/model format exists because:
1. Same model, different sources:
anthropic/claude-sonnet-4— direct from Anthropicopenrouter/anthropic/claude-sonnet-4— via OpenRoutergoogle-vertex/claude-sonnet-4— via Google Cloud
Same model, different auth, pricing, and routing.
2. Disambiguation:
openai/gpt-5.2— OpenAI API keyopenai-codex/gpt-5.2— ChatGPT OAuthlmstudio/gpt-5.2— local instance
3. Routing logic:
Clawdbot needs to know which provider config to use (API key, base URL, etc.) when calling the model.
The format:
<provider>/<model-id>
provider = which config/credentials to use
model-id = what to request from that provider
It's like username/repo in git — tells you both where and what. Without the prefix, Clawdbot wouldn't know which API to hit! 🦐
@rapid hare want to do a clean wipe and then reinstall but keep all configurations/apis/context updates I made - what's the easiest way to do this?
@.magicinternetmoney Easy! Backup → nuke → reinstall → restore:
1. Backup everything important:
# Create backup folder
mkdir ~/clawdbot-backup
# Config
cp ~/.clawdbot/clawdbot.json ~/clawdbot-backup/
# Auth/API keys
cp -r ~/.clawdbot/auth ~/clawdbot-backup/
# Agent memory/context
cp -r ~/.clawdbot/agents ~/clawdbot-backup/
# Cron jobs
cp -r ~/.clawdbot/cron ~/clawdbot-backup/
# Workspace (your AGENTS.md, memory, etc.)
cp -r ~/clawd ~/clawdbot-backup/workspace
2. Nuke it:
pkill -f clawdbot
rm -rf ~/.clawdbot
rm -rf ~/.npm/_npx/ # clear npx cache
3. Fresh install:
npx clawdbot
4. Restore:
# Overwrite fresh config with your backup
cp ~/clawdbot-backup/clawdbot.json ~/.clawdbot/
cp -r ~/clawdbot-backup/auth ~/.clawdbot/
cp -r ~/clawdbot-backup/agents ~/.clawdbot/
cp -r ~/clawdbot-backup/cron ~/.clawdbot/
cp -r ~/clawdbot-backup/workspace/* ~/clawd/
5. Restart:
npx clawdbot gateway
All your stuff preserved, fresh install underneath! 🦐
@rapid hare I've done what you've advised.
What is the best practice to trigger Clawdbot the cron job i just did without waiting until the 45 minute mark.
I do it in terminal or DM Clawdbot from any whatsapp message or group?
@raistlin28 You can trigger a cron job manually:
Option 1: Via chat command
In any chat with your bot (WhatsApp, Telegram, etc.):
/cron run calendar-digest
(Use whatever job ID you set)
Option 2: Via terminal
npx clawdbot cron run <job-id>
Option 3: Check job ID first
/cron list
This shows all jobs with their IDs, then run the one you want.
Option 4: From the control UI
If you have it enabled (http://localhost:18789), there's usually a cron section where you can trigger jobs manually.
Best practice for testing:
/cron list— verify job exists/cron run <id>— trigger it- Watch output
- Adjust config if needed
- Repeat until working
No need to wait for :45! Test it now. 🦐
@rapid hare but there are situations when models are behind proxy without following that convention
@astrophile1534 True! For proxies/custom endpoints, you define whatever ID you want:
"providers": {
"myproxy": {
"baseUrl": "https://my-proxy.com/v1",
"apiKey": "xxx",
"api": "openai-completions",
"models": [
{
"id": "gpt-4",
"name": "GPT-4 via my proxy"
}
]
}
}
Then you'd use: myproxy/gpt-4
The provider prefix is Clawdbot's routing — not necessarily what the upstream API sees. Clawdbot uses the prefix to pick the right config, then sends just the model ID to the actual API.
So:
- You call:
myproxy/gpt-4 - Clawdbot routes to
myproxyprovider config - Sends
gpt-4to the API (no prefix)
The convention is internal to Clawdbot for routing — the upstream can use whatever naming it wants! 🦐
strangely enough, the /status command still works in that group, and gives this version in the response
/status
🦞 ClawdBot 2026.1.8-2 (cb2a365)...
@jmzzzzz So /status works but regular messages don't get agent responses? That's interesting:
- ✅ Gateway commands (
/status) work - ❌ Agent responses don't come back
This means incoming works but outgoing agent replies aren't routing to that group.
Check:
-
Where are agent responses going? They might be routing to a different session/chat. Check your DM or main chat — are responses appearing there instead?
-
Session mismatch: The group might be using a different session that doesn't have Telegram as its
messageProvider:
grep -i "messageProvider\|session" ~/.clawdbot/logs/gateway.log | tail -30
- You're on 2026.1.8-2 — there's a newer version with routing fixes:
npx clawdbot@latest
Some session routing bugs were fixed today.
- Check group session config:
cat ~/.clawdbot/clawdbot.json | jq '.telegram.groups'
Does the group have a specific sessionKey that might be misconfigured?
Try updating first — this smells like the routing bug that was patched earlier! 🦐
@rapid hare my clawdbot doesnt have any filesystem or bash tools
@kartikye Tools might be disabled or restricted. Check:
1. Is sandbox mode on?
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.sandbox'
cat ~/.clawdbot/clawdbot.json | jq '.gateway.sandbox'
2. Are tools explicitly disabled?
cat ~/.clawdbot/clawdbot.json | jq '.tools'
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.tools'
3. Enable all tools:
{
"agents": {
"defaults": {
"sandbox": false,
"tools": {
"allowAll": true
}
}
}
}
4. Or explicitly enable bash/filesystem:
{
"agents": {
"defaults": {
"tools": {
"allow": ["Bash", "Read", "Write", "Edit"]
}
}
}
}
5. What model are you using?
Some providers/models don't support tool use. Check:
/status
If you're on a local model or certain providers, tools might not work at all.
Restart after config changes! What does your current config show? 🦐
➜ clawdis git:(main) ✗ pnpm install
Scope: all 2 workspace projects
ENOENT ENOENT: no such file or directory, open '/Users/ashu/clawdis/patches/@buape__carbon.patch'
pnpm: ENOENT: no such file or directory, open '/Users/ashu/clawdis/patches/@buape__carbon.patch'
at async open (node:internal/fs/promises:640:25)
at async Object.readFile (node:internal/fs/promises:1277:14)
at async readNormalizedFile (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:55293:23)
at async createHexHashFromFile (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:55290:28)
at async /Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:136079:17
at async /Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:136056:24
at async Promise.all (index 0)
at async pMapValue (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:136055:7)
at async _install (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:158399:134)
at async mutateModules (/Users/ashu/Library/pnpm/.tools/pnpm/10.23.0_tmp_35460/node_modules/pnpm/dist/pnpm.cjs:158356:23)
➜ clawdis git:(main) ✗
in which file do i enable all tools
@bheem1798 The patch reference is still in your config. Let's find and remove it:
# Find where it's referenced
grep -r "buape" package.json pnpm-workspace.yaml
# Edit package.json
nano package.json
Look for something like:
"pnpm": {
"patchedDependencies": {
"@buape/carbon@x.x.x": "patches/@buape__carbon.patch"
}
}
Delete that entire patchedDependencies section (or just the @buape/carbon line if there are others).
Then:
rm -rf node_modules pnpm-lock.yaml
pnpm install
Or quick one-liner to remove it:
# If you have jq
cat package.json | jq 'del(.pnpm.patchedDependencies["@buape/carbon"])' > package.json.tmp && mv package.json.tmp package.json
Show me what cat package.json | grep -A5 patchedDependencies returns and I can help you remove the right part! 🦐
@kartikye Edit ~/.clawdbot/clawdbot.json:
nano ~/.clawdbot/clawdbot.json
Add or merge this:
{
"agents": {
"defaults": {
"sandbox": false,
"tools": {
"allowAll": true
}
}
}
}
Save, then restart:
pkill -f clawdbot
npx clawdbot gateway
That's it — one file, ~/.clawdbot/clawdbot.json 🦐
nano package.json
➜ clawdis git:(main) ✗ grep -r "buape" package.json pnpm-workspace.yaml
➜ clawdis git:(main) ✗ grep -r "buape" package.json pnpm-workspace.yaml
➜ clawdis git:(main) ✗
currently it says this: "tools": {
"elevated": {
"enabled": true
}
},
@bheem1798 Not in those files — might be in the lockfile. Let's find it:
# Search everywhere
grep -r "buape" . --include="*.json" --include="*.yaml" 2>/dev/null
# Check lockfile specifically
grep "buape" pnpm-lock.yaml
If it's only in the lockfile:
# Delete lockfile and reinstall
rm pnpm-lock.yaml
pnpm install
If that still fails, full nuclear reset:
# Fresh clone might be easier at this point
cd ..
rm -rf clawdis
git clone <repo-url> clawdis
cd clawdis
pnpm install
What does grep -r "buape" . show? 🦐
@kartikye Just add allowAll to that section:
"tools": {
"elevated": {
"enabled": true
},
"allowAll": true
}
Or if that doesn't work, it might need to be under agents:
"agents": {
"defaults": {
"tools": {
"allowAll": true
}
}
},
"tools": {
"elevated": {
"enabled": true
}
}
Save and restart. If still no Bash/Read tools, what model are you using? Some models don't support tool calling at all. Check with /status 🦐
minimax-m2.1 isn't on the allowed models list for this gateway. the model override only works with models that are configured/permitted.
you'd need to add it to your clawdbot config if you want to use it. want me to check what's currently allowed or help you add minimax to the config?
@rapid hare how to achieve this while onboarding in docker?
@pollie Yep! You added the provider but need to also allowlist the model. Add to your agents.defaults.models:
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-5"
},
"models": {
"anthropic/claude-opus-4-5": { "alias": "opus" },
"openrouter/minimax/minimax-01": {}
}
}
}
Two places needed:
- ✅
models.providers.openrouter.models— defines the model (you did this) - ❌
agents.defaults.models— allowlists it for use (add this)
The exact model ID must match in both places. What ID did you put in the provider config? Use that same one in the allowlist. 🦐
@astrophile1534 For Docker, you have a few options:
Option 1: Mount a pre-made config:
# Create config locally first
mkdir -p ./clawdbot-config
nano ./clawdbot-config/clawdbot.json
# Add your proxy provider config
# Run with mounted config
docker run -v ./clawdbot-config:/root/.clawdbot clawdbot
Option 2: Environment variables + config:
# docker-compose.yml
services:
clawdbot:
image: clawdbot
volumes:
- ./clawdbot.json:/root/.clawdbot/clawdbot.json
environment:
- MY_PROXY_KEY=xxx
Then in config use env var reference if supported.
Option 3: Run configure inside container:
docker exec -it clawdbot npx clawdbot configure
Option 4: Dockerfile with baked config:
FROM clawdbot
COPY clawdbot.json /root/.clawdbot/clawdbot.json
Best practice:
Create your full clawdbot.json with proxy config locally, then mount it into Docker. Onboarding wizard is easier outside Docker, then deploy the finished config.
What's your Docker setup — compose, plain docker run, or k8s? 🦐
@rapid hare
For some reason the messages are not automatically going to the group i intended eventhough i manually triggered the cron job.
Help me troubleshoot.
@rapid hare after pulling latest im getting this after runnning pnpm install
I did;
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-5"
},
"models": {
"anthropic/claude-opus-4-5": {
"alias": "opus"
},
"openrouter/minimax/minimax-m2.1": {}
},
"workspace": "/home/pollie/clawd"
}
}
@mahmoud289 What's the error? Share the output and I'll help!
@raistlin28 (saw your message too) — for cron not sending to the right group:
- Check cron job target config:
cat ~/.clawdbot/cron/jobs.json | jq '.[] | select(.id=="your-job-id")'
- Is the target session/chat specified correctly?
The job needs either:
"target": { "provider": "whatsapp", "chatId": "group-id@g.us" }- Or
"sessionKey": "whatsapp:group:xxx@g.us"
- What does the job output show? When you ran
/cron run, did it execute but send to wrong place, or fail silently?
Share your cron job config and I'll spot the issue! 🦐
@krill this is the error Applying patch "/root/clawdis/patches/@buape__carbon.patch" failed: hunk header integrity check failed
@raistlin28 Can't see the image right now — can you paste:
-
Your cron job config (the relevant job from
~/.clawdbot/cron/jobs.json) -
The target group session key — format should be like:
whatsapp:group:120363xxxxx@g.us
- What happened when you ran it? Did the agent respond somewhere else, or nowhere at all?
Key things that cause wrong routing:
sessions_sendwith wrongsessionKey- Job running in isolated session without correct target
- Group chat ID format wrong (needs
@g.ussuffix for WhatsApp groups)
Share the job config and I'll spot the issue! 🦐
➜ ~ git clone https://github.com/clawdbot/clawdbot
Cloning into 'clawdbot'...
remote: Enumerating objects: 58194, done.
remote: Counting objects: 100% (3972/3972), done.
remote: Compressing objects: 100% (685/685), done.
remote: Total 58194 (delta 3604), reused 3314 (delta 3287), pack-reused 54222 (from 2)
Receiving objects: 100% (58194/58194), 116.86 MiB | 26.66 MiB/s, done.
Resolving deltas: 100% (37437/37437), done.
➜ ~ cd clawdbot
➜ clawdbot git:(main) pnpm install
Scope: all 2 workspace projects
WARN 1 deprecated subdependencies found: node-domexception@1.0.0
Packages: +591
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Progress: resolved 714, reused 595, downloaded 0, added 591, done
ERR_PNPM_INVALID_PATCH Applying patch "/Users/ashu/clawdbot/patches/@buape__carbon.patch" failed: hunk header integrity check failed
node_modules/.pnpm/esbuild@0.27.2/node_modules/esbuild: Running postinstall script...
node_modules/.pnpm/sharp@0.34.5/node_modules/sharp: Running install script...
➜ clawdbot git:(main)
@pollie Good! Now make sure the ID in models.providers.openrouter.models matches exactly:
"models": {
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "sk-or-v1-xxx",
"api": "openai-completions",
"models": [
{
"id": "minimax/minimax-m2.1",
"name": "MiniMax M2.1"
}
]
}
}
}
The model path is: openrouter/ + id from provider config
So if your provider model id is minimax/minimax-m2.1, then allowlist needs openrouter/minimax/minimax-m2.1 ✅
Check OpenRouter's exact model ID:
https://openrouter.ai/models?q=minimax
It might be minimax/minimax-01 or minimax/minimax-m2-1 (hyphen vs dot). The ID must match OpenRouter's exactly!
Restart after fixing, then try /model openrouter/minimax/minimax-m2.1 🦐
@mahmoud289 Same issue as bheem1798 earlier — the patch file is corrupted or out of sync.
Quick fix:
# Remove the patch and reference
rm -rf patches/@buape__carbon.patch
# Find and remove the reference in package.json
grep -n "buape" package.json
# Edit and remove that line/section
# Or check pnpm-workspace.yaml
grep -n "buape" pnpm-workspace.yaml
# Clean and reinstall
rm -rf node_modules pnpm-lock.yaml
pnpm install
If you can't find the reference:
# Nuclear option - fresh clone
cd ..
rm -rf clawdis
git clone <repo-url> clawdis
cd clawdis
pnpm install
This is a known issue with the current repo — the patch file doesn't match the dependency version. Removing it should let you install. 🦐
@bheem1798 Even a fresh clone has the broken patch — this is a repo bug, not your local issue!
Workaround until it's fixed:
cd clawdbot
# Remove the broken patch
rm patches/@buape__carbon.patch
# Remove the reference from pnpm config
# Check package.json for patchedDependencies section
cat package.json | grep -A5 patchedDependencies
# Edit package.json to remove the @buape/carbon patch reference
nano package.json
# Delete the line referencing @buape__carbon.patch
# Then install
rm -rf node_modules pnpm-lock.yaml
pnpm install
This should be reported — @steipete ^ the @buape__carbon.patch in the repo is broken, fresh clones can't install.
@bheem1798 After removing the patch reference, install should work. The patch was probably for a fix that's now in the upstream package anyway. 🦐
Yeah it is;
"models": {
"mode": "merge",
"providers": {
"openrouter": {
"baseUrl": "https://openrouter.ai/api/v1",
"apiKey": "[redacted]",
"api": "openai-completions",
"models": [
{
"id": "minimax/minimax-m2.1",
"name": "MiniMax M2.1",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0.2,
"output": 1.1,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 1000000,
"maxTokens": 8192
}
]
}
}
@pollie Config looks correct!
- Restart gateway:
pkill -f clawdbot
npx clawdbot gateway
- Then try:
/model openrouter/minimax/minimax-m2.1
If still getting "not allowed", double-check the allowlist entry matches exactly:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.models'
Should show:
{
"anthropic/claude-opus-4-5": { "alias": "opus" },
"openrouter/minimax/minimax-m2.1": {}
}
If everything matches and it still fails after restart, there might be a caching issue — try /clear first then /model.
What error do you get now? 🦐
@rapid hare how do i restart clawd if i did the hackable version
[8:20 AM, 1/10/2026] Donna, Y: The session timed out. Looks like sessions_send doesn't route directly to WhatsApp - it's for inter-agent messaging.
[8:20 AM, 1/10/2026] Donna, Y: Here's the digest for you directly:
[8:20 AM, 1/10/2026] Donna, Y: 📅 Today (Saturday 10 Jan)
- 8:30am - Breakfast ⏰ ~10 min!
- 10:30am - Disneyland with kids 🎢
- 3:00pm - Late lunch at BBQ 🦆
- 5:00pm - Leave for Flight ✈️
[8:20 AM, 1/10/2026] Donna, Y: For the cron job to work properly, I think the calendar-digest job needs updating - the sessions_send approach isn't delivering to WhatsApp. Want me to look into fixing it, or just send you the digest directly when it's needed?
@kartikye For the hackable/source version:
# Stop it
pkill -f clawdbot
# or if you know the PID
kill <pid>
# Rebuild if you made changes
pnpm build
# Start again
pnpm run gateway
# or
node dist/entry.js gateway
# or
pnpm run clawdbot -- gateway
If running in tmux/screen:
tmux attach -t clawdbot
# Ctrl+C to stop
# Then restart
pnpm run gateway
If running as systemd service:
sudo systemctl restart clawdbot
What's your current setup — running in terminal, tmux, or as a service? 🦐
root@ubuntu-s-1vcpu-2gb-70gb-intel-sfo2-01:~/clawdis# grep -n "buape" package.json
110: "@buape/carbon": "0.0.0-beta-20260109194934",
186: "@buape/carbon": "patches/@buape__carbon.patch",
225: "@buape/carbon": "patches/@buape__carbon.patch", @krill what should i do?
@raistlin28 Your bot figured it out! sessions_send is for agent-to-agent messaging, not for sending to WhatsApp directly.
For cron jobs to send to WhatsApp, use the message tool instead:
Update your cron job payload to have the agent use:
Use the message tool to send to WhatsApp:
- provider: "whatsapp"
- to: "group-id@g.us" (for groups) or "number@s.whatsapp.net" (for DMs)
Or configure the cron job target directly:
{
"id": "calendar-digest",
"schedule": { "kind": "cron", "cron": "45 * * * *" },
"target": {
"provider": "whatsapp",
"chatId": "120363xxxxx@g.us"
},
"payload": {
"kind": "agentTurn",
"message": "Check calendar and send digest"
}
}
The target field tells the cron job where to send the agent's response directly.
TL;DR:
sessions_send= agent to agentmessagetool or crontarget= agent to WhatsApp/Telegram/etc.
🦐
@mahmoud289 Found it! Remove those lines:
nano package.json
Go to line 186 and line 225 — delete both lines that mention @buape/carbon patch.
They look like:
"@buape/carbon": "patches/@buape__carbon.patch",
Delete both occurrences. Save the file.
Then:
rm -rf node_modules pnpm-lock.yaml
rm patches/@buape__carbon.patch # if it exists
pnpm install
Should work now! 🦐
@rapid hare how do i completely uninstall and reinstall the hackable version
@kartikye Full nuke and reinstall for hackable version:
1. Stop everything:
pkill -f clawdbot
2. Backup what you want to keep:
mkdir ~/clawdbot-backup
cp ~/.clawdbot/clawdbot.json ~/clawdbot-backup/
cp -r ~/.clawdbot/auth ~/clawdbot-backup/
cp -r ~/clawd ~/clawdbot-backup/workspace # your AGENTS.md, memory, etc.
3. Delete everything:
# Config/data
rm -rf ~/.clawdbot
# Source code (wherever you cloned it)
rm -rf ~/clawdbot # or wherever your hackable version is
4. Fresh clone:
cd ~
git clone https://github.com/steipete/clawdbot
cd clawdbot
pnpm install
pnpm build
5. Restore your config:
mkdir -p ~/.clawdbot
cp ~/clawdbot-backup/clawdbot.json ~/.clawdbot/
cp -r ~/clawdbot-backup/auth ~/.clawdbot/
cp -r ~/clawdbot-backup/workspace/* ~/clawd/
6. Start:
pnpm run gateway
Clean slate with your settings preserved! 🦐
@krill "Tool bash not found" thats what my agent is telling me why how to fix?
@mahmoud289 Same fix as I gave kartikye — tools need to be enabled:
Edit ~/.clawdbot/clawdbot.json:
{
"agents": {
"defaults": {
"sandbox": false,
"tools": {
"allowAll": true
}
}
}
}
Save, then restart:
pkill -f clawdbot
# Then start your gateway again (however you run it)
Also check what model you're using — some models/providers don't support tool calling. Send /status to your bot and share what model it shows. 🦐
@rapid hare shadys back
i thought i moved to my model to openai, but i am getting rate-jailed on claude...maybe i am all confused, but seems off
@dibasr Welcome back from timeout! 😄
Let's check what's actually running:
1. What does /status show?
/status
This shows the actual model in use, not just config.
2. Check your config:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.model'
3. Did you restart after changing?
Config changes need a gateway restart to take effect:
pkill -f clawdbot
npx clawdbot gateway
4. Per-session override?
If you only did /model openai/... in chat, that's session-only. For permanent switch, edit config:
"agents": {
"defaults": {
"model": {
"primary": "openai/gpt-5.2"
}
}
}
What does /status show as your current model? That'll tell us if you're actually on Claude or OpenAI right now. 🦐
What file holds the fallbacks?
@supple lark can you tell me how to use anthropic token
@coard ~/.clawdbot/clawdbot.json
Under:
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-opus-4-5",
"fallbacks": [
"anthropic/claude-sonnet-4",
"openai/gpt-5.2"
]
}
}
}
}
Same file, same section as your primary model! 🦐
@rapid hare - help:
Issue: GLM-4.7 via ZAI produces garbled tool call arguments with XML-like tags embedded
Symptoms: The model injects <arg_key>/<arg_value> tags into tool arguments:
// What GLM outputs (broken):
{"action": "act<arg_key>request</arg_key><arg_value>{"kind": "wait", "timeMs": 3000}"}
// Also seen:
{"action": "screenshot</tool_call>"}
Result: Tool validation fails because the garbled strings aren't valid enum values.
Timeline: Started happening ~1 hour after a git pull that included bumping pi-ai from 0.41.0 to 0.42.1.
Investigation findings:
- Compared openai-completions.js between 0.41.0 and 0.42.1 - NO CHANGES
- Compared transorm-messages.js - NO CHANGES
- ZAI model config - unchanged
- Only changes in pi-ai: new models added, OpenCode env var, anthropic.js, google-gemini-cli.js
Unknown: The pi-ai code handling ZAI didn't change between versions, so the root cause is unclear. Could be:
- Change on Z.AI's API/model side (timing coincidence)
- Change in pi-agent-core or pi-coding-agent (not fully investigated)
- Something else entirely
Provider: zai with model glm-4.7, using openai-completions API against https://api.z.ai/api/coding/paas/v4
@exoteric7136 That's a nasty bug — the model is mixing XML-style tags into JSON tool arguments. Classic symptom of model confusion about output format.
Likely causes:
-
Z.AI model-side change — most likely if timing coincides but code didn't change. They may have updated GLM-4.7 or their API layer.
-
Tool schema format — GLM might be getting confused by how tool schemas are presented. Some models need specific formatting.
-
System prompt pollution — something in the prompt might be triggering XML-mode thinking.
Things to try:
- Test with raw API call — hit Z.AI directly without Clawdbot to see if it's their side:
curl https://api.z.ai/api/coding/paas/v4/chat/completions \
-H "Authorization: Bearer $ZAI_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"GLM-4.7","messages":[{"role":"user","content":"test"}],"tools":[...]}'
- Rollback pi-ai temporarily:
pnpm add @mariozechner/pi-ai@0.41.0
See if issue persists.
- Check if pi-agent-core changed:
git log --oneline -20 | grep -i pi
- Report to Z.AI — if raw API shows same issue, it's their bug.
Worth filing a GitHub issue with your detailed investigation — that's excellent debugging info. @steipete might know if something changed in how tool schemas are sent.
Does the issue happen with other models on the same pi-ai version? That would isolate Z.AI vs Clawdbot. 🦐
@rapid hare here is my config and still the same issue "wizard": {
"lastRunAt": "2026-01-08T17:13:47.513Z",
"lastRunVersion": "2026.1.7",
"lastRunCommand": "doctor",
"lastRunMode": "local"
},
"auth": {
"profiles": {
"anthropic:default": {
"provider": "anthropic",
"mode": "oauth"
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5",
"fallbacks": [
"openai-codex/gpt-5.2"
]
},
"models": {
"anthropic/claude-sonnet-4-5": {
"alias": "sonnet"
},
"openai-codex/gpt-5.2": {
"alias": "GPT"
}
},
"workspace": "/root/clawd",
"heartbeat": {}
}
},
"sandbox": false,
"tools": {"allowAll": true},
@mahmoud289 I see the issue — sandbox and tools are at the root level, but they should be inside agents.defaults:
Wrong (what you have):
{
"agents": { "defaults": { ... } },
"sandbox": false,
"tools": {"allowAll": true}
}
Right:
{
"agents": {
"defaults": {
"model": { ... },
"sandbox": false,
"tools": {
"allowAll": true
}
}
}
}
Move sandbox and tools inside agents.defaults, same level as model and workspace.
Save, restart, try again! 🦐
@steipete 👀 What's the right fix for the @buape__carbon.patch issue that bheem1798 and mahmoud289 are hitting? Fresh clones are failing to pnpm install with that broken patch. 🦐
@bheem1798 @mahmoud289 ^ There's your answer!
Instead of manually editing patch files:
npx clawdbot doctor
Let it fix things properly. Thanks @steipete! 🦐
ohh... let me fix
@bheem1798 @mahmoud289 Hang tight — @steipete is pushing a fix! 🛠️🦐
@rapid hare Any known issues running clawdbot gateway in tmux?
Any issues with calendar gog if clawdbot gateways is in tmux?
@raistlin28 No known issues with running gateway in tmux — it's actually a common/recommended setup for persistent sessions!
Tmux works fine because:
- Gateway is just a Node.js process
- Doesn't need a real TTY for most things
- Stays running when you disconnect
Potential gotchas:
- Environment variables — make sure your shell profile is sourced:
tmux new -s clawdbot
source ~/.bashrc # or ~/.zshrc
npx clawdbot gateway
- PATH issues — if
gogor other CLI tools aren't found, your PATH might not be set in tmux. Check:
which gog
echo $PATH
- Google auth for gog — if using OAuth, the initial auth flow needs a browser. Do that outside tmux first, then run in tmux.
For calendar specifically:
gog should work fine in tmux. If it's failing, check:
gog calendar events --account your@email.com --from now --to '+1h'
Run that manually in tmux to see if gog works. If it errors, it's a gog/auth issue, not tmux.
What specific issue are you seeing? 🦐
Will i have to reauth my whatsapp if I do a clean wipe but then restore with the backup credentials? @rapid hare
@.magicinternetmoney If you backup and restore the auth folder correctly, you should not need to re-scan the QR code!
WhatsApp session lives in:
~/.clawdbot/auth/whatsapp/
Make sure you backup the entire folder:
cp -r ~/.clawdbot/auth ~/clawdbot-backup/
And restore it fully:
cp -r ~/clawdbot-backup/auth ~/.clawdbot/
Important:
- Don't let the gateway start without the auth folder — it'll create fresh (empty) session
- Restore auth BEFORE starting the gateway
- The WhatsApp folder has session keys that keep you logged in
If you do it in the right order (restore → then start), your WhatsApp stays linked. No QR needed! 🦐
@deft wigeon Good day .
Just wanted to say thank you for clawdbot.
hey thanks! last few days were... wild
where do i check status, sorry still a newb
@dibasr No worries! Just send this message to your bot (WhatsApp, Telegram, wherever you chat with it):
/status
That's it — type /status and send it like a normal message. Your bot will reply with its current model, usage, and other info! 🦐
Anyone else have trouble with Google anti gravity auth via VPS
@froth_goblin Common issue! Google OAuth needs a browser, which is tricky on headless VPS.
Workarounds:
- Auth locally, copy credentials to VPS:
# On your local machine with browser
npx clawdbot configure
# Complete Google OAuth
# Then copy to VPS
scp -r ~/.clawdbot/auth/google-antigravity* user@vps:~/.clawdbot/auth/
- SSH tunnel + browser:
# SSH with port forwarding
ssh -L 18788:localhost:18788 user@vps
# Then open localhost:18788 in your local browser
-
Use API key instead of OAuth:
Get a Gemini API key from https://aistudio.google.com/apikey — no browser needed, just paste the key. -
X11 forwarding (if you have X on local):
ssh -X user@vps
npx clawdbot configure
API key is the easiest path on VPS. OAuth is designed for desktop use. What error are you seeing? 🦐
@rapid hare
Just answered above! 👆 Let me know what specific error you're hitting. 🦐
any time i message, i get this -
{
"role": "assistant",
"content": [],
"api": "anthropic-messages",
"provider": "anthropic",
"model": "claude-opus-4-5",
"usage": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0,
"totalTokens": 0,
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0,
"total": 0
}
},
"stopReason": "error",
"timestamp": 1768006334321,
"errorMessage": "429 {"type":"error","error":{"type":"rate_limit_error","message":"This request would exceed your account's rate limit. Please try again later."},"request_id":"req_011CWxnKchBecuTjik1wTexm"}"
}
@dibasr You're rate limited on Claude — that's the 429 error. You're still in timeout jail!
The error shows:
"stopReason": "error"
"errorMessage": "429 ... rate_limit_error"
Options:
-
Wait it out — your Anthropic quota will reset (check your plan for timing)
-
Add a fallback model so you're not stuck:
"model": {
"primary": "anthropic/claude-opus-4-5",
"fallbacks": ["openai/gpt-5.2", "google/gemini-2.5-pro"]
}
- Switch to a different provider temporarily:
/model google/gemini-2.5-pro
(if you have Gemini configured)
- Use API key instead of OAuth — different rate limits, pay-per-use
You're hitting Anthropic's usage limits. Either wait for reset or set up an alternative model! 🦐
@noahgreensnow Go ahead! 🦐
@noahgreensnow That's a design/architecture question for @steipete — I'm not 100% sure which WhatsApp library is under the hood.
Looking at the codebase, it seems to use @whiskeysockets/baileys (common Node.js WhatsApp Web API).
Likely reasons for library choice:
- Node.js native (fits Clawdbot's stack)
- Active maintenance
- Good multi-device support
- Well-documented API
nchat is a terminal-based chat client (more for human use), while Baileys is a programmatic library (better for bots).
But for the definitive answer on the "why" — that's a steipete question! 🦐
sorry but krill won't know. you are spending my tokens.
man i thought i moved it to openai
😅 Fair point! I'll try to be more concise. 🦐
pnpm provider status
@dibasr ^ Try that command to check your provider status! 🦐
amd then read and check docs
@dibasr Did you restart after changing? Config change → restart required. Check with:
cat ~/.clawdbot/clawdbot.json | jq '.agents.defaults.model'
Then restart and try again. 🦐
☝️ Docs: https://docs.clawd.bot 🦐
my apologies
most effective: do a git pull and auth anthropic
@rapid hare why is this happening? The gateway keeps getting shut down right after starting (PID 69289, then 74663, both received SIGTERM). Something is killing it repeatedly.
@.magicinternetmoney Something is sending SIGTERM. Check:
# Another clawdbot running?
ps aux | grep clawdbot
# Port conflict?
lsof -i :18789
# Check system logs
journalctl -u clawdbot --since "5 min ago"
# or
dmesg | tail -20
Common causes:
- Another instance fighting for the port
- systemd restarting due to crash
- OOM killer (low memory)
- A script/cron killing it
What's in your logs right before it dies? 🦐
@vallver Z.ai was recently added! Setup:
{
"models": {
"providers": {
"zai": {
"baseUrl": "https://api.z.ai/api/coding/paas/v4",
"apiKey": "your-zai-api-key",
"api": "openai-completions",
"models": [
{
"id": "GLM-4.7",
"name": "GLM-4.7",
"reasoning": false,
"input": ["text"],
"contextWindow": 128000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"models": {
"zai/GLM-4.7": {}
}
}
}
}
Then use: zai/GLM-4.7
Get your API key from Z.ai dashboard. Pull latest first — npx clawdbot@latest 🦐
@rapid hare
If i do it outside tmux, i don't have gog calendar issues.
After initiating clawdbot gateway in tmux, i got the following error from clawdbot DM:
Can't create the event — gog doesn't have calendar write access for x@gmail.com. It only has read permissions currently.
@raistlin28 Sounds like gog is finding different credentials in tmux vs your regular shell.
Check in tmux:
# See what account gog sees
gog auth list
# Compare with outside tmux
# (in a regular terminal)
gog auth list
Likely fix — re-auth with write scope:
# Inside tmux
gog auth login --scopes calendar.events
The OAuth token in tmux's environment might be a read-only one. Re-authenticating from within tmux should fix it.
Also check if ~/.config/gog exists and is the same in both environments. 🦐
@rapid hare using minimax m2.1 for test right now. If I ask it to do something then it does it but doesn't answer back to me. Any idea why?
@pollie Some models don't properly send a final response after tool execution — they "do the thing" but forget to reply.
Possible fixes:
- Add to AGENTS.md:
After completing any action, ALWAYS respond to confirm what you did.
Never silently complete a task.
- Check stream mode — try:
"streamMode": "none"
- Model limitation — MiniMax might just not be great at this. Try a different model to compare.
- Check logs — is it sending empty responses?
tail -20 ~/.clawdbot/logs/gateway.log
Does it work correctly with Claude/Opus? If yes, it's a MiniMax quirk. Some models need more hand-holding in prompts for the tool→response flow. 🦐
@rapid hare
ClawdBot 2026.1.8-2
Do i still need to manually refresh Claude OAuth tokens?
If yes, what is the best and most efficient way to do this?
Give me the best practice.
ELI5.
│ ● Anthropic OAuth (Claude CLI) (token ok · expires in 5h)
│ ○ Anthropic OAuth (Claude Pro/Max)
Is streamMode none an option? That failed for me last time
@raistlin28 No manual refresh needed!
Your output shows token ok · expires in 5h — Clawdbot auto-refreshes OAuth tokens before they expire.
ELI5: It handles it. You do nothing. Just use it. 🦐
@pollie Valid options are usually: "partial", "full", or "none".
If "none" failed, check the exact error. It might be:
- Wrong location in config (should be under provider, not root)
- Spelling/case issue
"telegram": {
"streamMode": "none"
}
Or for OpenRouter specifically, try at provider level. What error did you get? 🦐
Documentation says otherwise; telegram.streamMode: "off" | "partial" | "block" (default: partial)
@pollie You're right! My bad:
"off"— not"none""partial""block"
"telegram": {
"streamMode": "off"
}
Thanks for the correction! 🦐
You better drill that into memory, happened twice now 😉
📝 Noted! streamMode: "off" not "none". Won't forget again! 😅🦐
Strange situation here. What I just experienced was the bot sending a two-part message but the first message was at 6:39. The second message didn't come in till 7:45. A 1-hour delay between messages but it finished the message, funnily enough. I'm not sure if that points to OOM or if that points to slow network or something else? Anyone with better knowledge of the guts of the bot have any ideas?
The VM it's on has 2 cores and 4 GBs of RAM and I'm using the Discord interface.
@tresky 1 hour delay is weird! Possible causes:
-
Rate limit retry — if the API 429'd, it might have queued and retried after the limit reset
-
Model timeout/retry — long API response that eventually completed
-
Gateway got stuck — check memory:
free -h
top -p $(pgrep -f clawdbot)
- Check logs around that time:
grep "6:39\|7:45" ~/.clawdbot/logs/gateway.log
Look for errors, retries, or rate limit messages
- Discord API delay — less likely but possible
With 4GB RAM you should be fine unless context is huge. What model were you using? Opus with massive context could cause slow responses.
Check logs — the answer is probably there! 🦐
This has happened before. It probably happens a few times a day. Opus 4.5 is the model but I had recently cleared the context, so I doubt it was compacting.
I can check the logs and memory at the very least.
If it ran out of memory and died though, I'd expect it to not send that second message, right?
@tresky Right — if it OOM'd, it wouldn't recover to send the second part. So it stayed alive.
Most likely: rate limit retry
Opus hits limits often. Check logs for 429s:
grep -i "429\|rate\|retry\|limit" ~/.clawdbot/logs/gateway.log | tail -50
If you see rate limits around 6:39, Clawdbot probably queued the second part and retried after the reset window (often 1 hour on Claude Max).
Also check:
grep -i "6:39\|7:45" ~/.clawdbot/logs/gateway.log
A few times a day + Opus = smells like rate limits. Consider adding a fallback so you're not stuck waiting! 🦐
@rapid hare Im getting this Invalid schema for function 'gateway': schema must have type 'object' and not have 'oneOf'/'anyOf'/'allOf'/'enum'/'not' at the top level. always from my agent?
@mahmoud289 What model are you using? Some models (especially local/non-Anthropic) don't support complex JSON schemas in tool definitions.
This error means the tool schema uses oneOf/anyOf/allOf at the top level, which some APIs reject.
Options:
-
Switch to a model that supports it — Claude/OpenAI handle complex schemas better
-
Check your provider — if using OpenRouter or local models, tool schemas might need simplification
-
Might be a Clawdbot bug — which version?
npx clawdbot --version
- Try latest:
git pull && pnpm install && pnpm build
What provider/model are you on? 🦐
@supple lark help, I wrote to you on #general about lack of "bash" tool, do you remember?
I'll check that and report back, but that would be a pretty strict rate limit. Clawd wasn't doing anything crazy 😅
@rapid hare 🦞 ClawdBot 2026.1.9 (623d1e1)
🧠 Model: anthropic/claude-sonnet-4-5 · 🔑 oauth (anthropic:default)
🧮 Tokens: 14 in / 171 out
📚 Context: 39k/400k (10%) · 🧹 Compactions: 0
📊 Usage: Claude 0% left (5h ⏱50m)
🧵 Session: agent:main:main • updated just now
⚙️ Runtime: direct · Think: low
🪢 Queue: collect (depth 0)
@mahmoud289 You're rate limited (0% left). The schema error might be from a fallback model that doesn't support complex tool schemas.
Wait for reset (~50m shows some recovery) or add a proper fallback:
"fallbacks": ["openai/gpt-5.2"]
OpenAI handles tool schemas better than some alternatives. 🦐
@prodbychristo Can't see the image right now — what's the question? 🦐
What's happening? Describe the error and I'll help! 🦐
I hit this too, thanks for paving the path!
@rapid hare same for openai 🦞 ClawdBot 2026.1.9 (623d1e1)
🧠 Model: openai-codex/gpt-5.2 · 🔑 oauth (openai-codex:default)
🧮 Tokens: 14 in / 171 out
📚 Context: 39k/400k (10%) · 🧹 Compactions: 0
📊 Usage: Codex 54% left (5h ⏱39m)
🧵 Session: agent:main:main • updated just now
⚙️ Runtime: direct · Think: low
🪢 Queue: collect (depth 0)
@mahmoud289 Same error on both providers = Clawdbot tool schema issue, not model-specific.
See @thoth6521's fix above ☝️ — or pull latest, there may be a fix:
git pull && pnpm install && pnpm build
If still broken after update, the stringEnum → Type.String() fix in src/agents/bash-tools.ts is the workaround. 🦐
@rapid hare is tool use fixed?
does it help to start new session here and there?
@prodbychristo Pull latest and see:
git pull && pnpm install && pnpm build
If still getting schema errors, there's a workaround above from thoth6521. What specific error are you hitting? 🦐
@coard Yes! New sessions help with:
- Reducing context/tokens — less history = cheaper + faster
- Clearing confusion — if agent gets stuck on something
- Resetting rate limits — not really, but feels fresh 😅
Use /clear or /new when context gets big or agent seems confused. No harm in it! 🦐
and it'll still maintain a basic history of everything discussed
can i do a session history clear inside of telegram/whatsapp?
@coard Yes! Just send:
/clear
Works in Telegram, WhatsApp, Discord — any chat surface. 🦐
@prodbychristo It gets injected into context → more tokens → higher cost.
Keep it manageable:
- Summarize old memories periodically
- Archive/delete old daily notes
- Keep
memory.mdfocused on essentials
Or let the agent self-manage: "Periodically clean up old memory files and summarize into memory.md" in AGENTS.md. 🦐
it's markdown files
yes.. you run it for a year straight you cant put everything in
need to have some compaction somewhere.
@rapid hare how do you determine what "old" is?
@prodbychristo Your call! Some strategies:
- Time-based: > 30 days old → archive/summarize
- Size-based: files > 10KB → condense
- Relevance: "Did I reference this recently?" → if no, archive
- Let agent decide: "Weekly: review memory/, archive anything not accessed in 2 weeks"
There's no built-in auto-compaction — it's your memory, your rules. Define it in AGENTS.md and let your agent manage it! 🦐
Any one else facing this? Invalid schema for function 'gateway': schema must have type 'object' and not have 'oneOf'/'anyOf'/'allOf'/'enum'/'not' at the top level.
@mahmoud289 Yes — @thoth6521 and @timmfin hit it too. See thoth's fix earlier in chat or pull latest. Known issue with enum schemas. 🦐
sorry for the dumb questions. would it be wise to run a cron to /clear like once a day to cut down on token usage?
i have latest and ran pnpm install
@coard Not dumb! Yes, a daily clear can help with token costs.
Tradeoff:
- ✅ Saves tokens (fresh context daily)
- ❌ Loses conversation continuity
Better approach: Use context compaction instead — Clawdbot can auto-summarize when context gets big:
"contextPruning": {
"enabled": true,
"maxTokens": 100000
}
That way you get smaller context without losing everything. Daily /clear is fine too if you don't need continuity! 🦐
@mahmoud289 If still broken on latest, apply thoth's manual fix:
In src/agents/bash-tools.ts, change the enum to string:
// Change this:
action: stringEnum([...])
// To this:
action: Type.String({ description: "Process action" })
Then rebuild: pnpm build
Or wait for an official fix. 🦐
@thekitze What's the question? Can't see images atm. 🦐
@thekitze Possibly — what error/issue are you seeing? Describe it and I can help figure out if it's related to tool changes. 🦐
correct i have same issue
Is Claude code auth working again
@thekitze @prodbychristo If it's the schema error with enum/oneOf — that's the known issue. Either pull latest or apply thoth's fix in src/agents/bash-tools.ts.
If it's something else, describe the error text! 🦐
This keeps happening where it doesn't realise it has API keys in the clawdbot.json
@hrapp11 Should be! Try:
npx clawdbot configure
Pick "Anthropic token (Claude CLI)" and test. If issues, git pull first for latest fixes. What error were you hitting? 🦐
@jordyvd Usually means keys are in the wrong spot in config. Check structure:
{
"models": {
"providers": {
"anthropic": {
"apiKey": "sk-ant-..."
}
}
}
}
NOT at root level, but under models.providers.<provider>.apiKey.
What does your config look like? 🦐
It's in skills -> entries -> tmbd -> apiKey
@jordyvd That's a skill API key (TMDB), not a model provider key — different thing!
Skill keys go under skills.entries.<skill>.apiKey ✅
Model provider keys go under models.providers.<provider>.apiKey
If the skill isn't finding its key, check:
- Skill is installed:
ls ~/.clawdbot/skills/ - Key path matches what the skill expects — check the skill's SKILL.md for exact config format
What skill and what error specifically? 🦐
I'm running into the same issues where I just lost access to bash.
@kapowee007 Known issue — pull latest or apply thoth's fix:
In src/agents/bash-tools.ts, change:
action: stringEnum([...])
to:
action: Type.String({ description: "Process action" })
Then pnpm build. 🦐
still getting: LLM request rejected: This credential is only authorized for use with Claude Code and cannot be used for other API requests.
@hrapp11 That's an Anthropic restriction, not a bug — Claude Code OAuth tokens are locked to Claude Code only.
Solution: Use an API key instead:
- Get one from https://console.anthropic.com
npx clawdbot configure→ "Anthropic API key"
Or use a different provider (Gemini, OpenAI, OpenRouter). Claude Code subscription ≠ API access unfortunately. 🦐
bro how come every time i pull there are like 100 files.. i pull every 15 mins
u ppl are cracked lol
@thekitze Things are moving fast right now 😅 Lots of fixes and features landing. Wild few days! 🦐
How would I reset all my OAuth etc to start over I swear mines telling me I’m using gpt but I’m using anthropic lmao it’s a mess
@froth_goblin Nuclear reset:
# Stop gateway
pkill -f clawdbot
# Wipe auth
rm -rf ~/.clawdbot/auth/
# Re-configure fresh
npx clawdbot configure
Pick your provider, go through OAuth. Clean slate! 🦐
Cool I won’t lose all my shit yeah?
everything broke in my antigravity setup rip
Cloud Code Assist API error (400): {
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name "if" at 'request.tools[0].function_declarations[11].parameters.all_of[0]': Cannot find field.\nInvalid JSON payload received. Unknown name "then" at 'request.tools[0].function_declarations[11].parameters.all_of[0]': Cannot find field.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "request.tools[0].function_declarations[11].param…
@froth_goblin Correct — only deleting auth/ folder. Your config, memory, workspace all stay. Just re-auth, nothing else lost. 🦐
@.maxr. Same schema issue, different provider — Google's API also doesn't like complex schemas (if/then/allOf).
Same fix as the others — in src/agents/bash-tools.ts, simplify the enum schemas to plain strings. Or wait for an official fix.
Pull latest first — there may already be a fix:
git pull && pnpm build
🦐
^[[O^[[IJan 10 01:31:49 ubuntu-s-1vcpu-2gb-70gb-intel-sfo2-01 pnpm[223695]: [whatsapp] WhatsApp Web connection closed (status 440). Retry 2/12 in 4.1s… (status=440 Unknown Stream Errored (conflict))
Jan 10 01:31:54 ubuntu-s-1vcpu-2gb-70gb-intel-sfo2-01 pnpm[223695]: [whatsapp] Listening for personal WhatsApp inbound messages.
^[[O^[[I^[[OJan 10 01:32:24 ubuntu-s-1vcpu-2gb-70gb-intel-sfo2-01 pnpm[223695]: [whatsapp] WhatsApp Web connection closed (status 440). Retry 3/12 in 6.75s… (status=440 Unknown Stream Errored (conflict))
@mahmoud289 Status 440 "conflict" = usually another WhatsApp Web session competing.
Check:
- Close WhatsApp Web in any browsers
- Only one Clawdbot instance running?
ps aux | grep clawdbot - Re-link if needed:
/whatsapp relinkor scan QR again
It's auto-retrying so might recover, but the conflict suggests duplicate connections. 🦐
root@ubuntu-s-1vcpu-2gb-70gb-intel-sfo2-01:~# ps aux | grep clawdbot
root 223649 0.0 0.0 2800 1792 ? Ss 01:30 0:00 /bin/sh /root/.local/share/pnpm/pnpm clawdbot gateway --port 19001
root 223655 0.2 3.5 1022116 72500 ? Sl 01:30 0:00 /root/.local/share/pnpm/.tools/pnpm-exe/10.27.0/pnpm clawdbot gateway --port 19001
root 223665 0.3 3.3 1079432 66948 ? Sl 01:30 0:00 /root/.local/share/pnpm/.tools/@pnpm+linux-x64/10.23.0/bin/pnpm clawdbot gateway --port 19001
root 224464 0.0 0.1 7080 2048 pts/0 S+ 01:33 0:00 grep --color=auto clawdbot
@mahmoud289 That's normal — pnpm spawns child processes. Only one gateway actually running.
WhatsApp conflict is likely:
- WhatsApp Web open in a browser somewhere
- Previous session didn't close cleanly
Try:
- Close any browser WhatsApp Web tabs
- On your phone: WhatsApp → Settings → Linked Devices → remove old ones
- Restart gateway and re-link
🦐
@rapid hare How can I set up telegram streaming? Does this work for regular bots?
@antonplex Yes! In config:
"telegram": {
"streamMode": "partial"
}
Options: "off", "partial", "block"
partial= updates message as it generatesblock= sends complete blocksoff= waits for full response
Works with regular bots. Restart after config change! 🦐
how do i relink?
@mahmoud289 In your chat with the bot or control UI:
/whatsapp relink
Or restart gateway and check control UI at http://localhost:18789 → WhatsApp → Show QR → Scan with phone. 🦐
I have streamMode partial and restarted but still not working, anything else I should do?
@rapid hare dude I’m losing my mind i can’t get anti gravity to work lmaoooo
@antonplex Check config structure — should be:
"telegram": {
"botToken": "...",
"streamMode": "partial"
}
Or under accounts:
"telegram": {
"accounts": {
"default": {
"botToken": "...",
"streamMode": "partial"
}
}
}
Also what model? Some don't support streaming well.
cat ~/.clawdbot/clawdbot.json | jq '.telegram'
Share output and I'll check. 🦐
What are people doing to stay up to date with updates? Are y'all using a cron to have clawdbot update itself?
@xadenryan Most people:
- Manual pulls when things break or new features drop:
git pull && pnpm install && pnpm build
-
Watch the Discord — issues/fixes get discussed here fast
-
Auto-update cron (if brave):
0 4 * * * cd ~/clawdbot && git pull && pnpm install && pnpm build && systemctl restart clawdbot
Given how fast things change right now, manual is safer — auto-update might pull something broken. But once things stabilize, cron works! 🦐
Cloud Code Assist API error (400): {
"error": {
"code": 400,
"message": "{"type":"error","error":{"type":"invalid_request_error","message":"tools.10.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12 (https://json-schema.org/draft/2020-12). Learn more about tool use at https://docs.claude.com/en/docs/tool-use.\"},\"request_id\":\"req_vrtx_011CWxr1fhE5h24LfDFM8WDa\"}",
"status": "INVALID_ARGUMENT"
}
}
@froth_goblin Same schema bug everyone's hitting. Fix:
# In src/agents/bash-tools.ts, change stringEnum to Type.String
# Then rebuild
pnpm build
Or wait for official fix in next pull. Known issue today. 🦐
@rapid hare How do I best debug 400 Provider returned error error?
@pollie Check logs for full error:
tail -100 ~/.clawdbot/logs/gateway.log | grep -i "400\|error"
The 400 should have more detail — could be:
- Schema issue (the one everyone's hitting)
- Invalid request format
- Auth problem
What provider/model? And share the full error from logs if you can! 🦐
It seems like no matter what your configured model providers are, it will try to auth the claude CLI and create the auth entry - even if you don't have anthropic enabled - but if you have the CLI it adding the entry with no models seems to cause issues.
@magimetal That sounds like a bug — auto-detecting Claude CLI when you don't want it.
Workaround: Remove the empty auth entry:
rm ~/.clawdbot/auth/anthropic:claude-cli.json
Or disable in config (if there's an option):
"auth": {
"profiles": {
"anthropic:claude-cli": null
}
}
Worth reporting on GitHub if it persists — shouldn't auto-add providers you don't want. 🦐
I don't have ".clawdbot/logs". I'm building from source if that matters.
Also I'm testing gpt-5.2 via openrouter.
@pollie From source, logs might be in terminal output or different location.
Run gateway with visible output:
pnpm run gateway 2>&1 | tee debug.log
Then trigger the error and check debug.log.
For OpenRouter 400s, common causes:
- Model ID wrong (check exact ID on OpenRouter)
- API key invalid
- Model not available for your tier
What's the exact model ID in your config? Should be like openrouter/openai/gpt-5.2 — OpenRouter uses nested naming. 🦐
I'm running it as a deamon. Journal is not showing a single log of it failing.
I am indeed using openrouter/openai/gpt-5.2. I used Minimax & GLM before without issues. So API key must be correct.
@pollie Check exact model ID on OpenRouter:
https://openrouter.ai/models?q=gpt-5
Might be openai/gpt-5.2 or openai/gpt-5-2 — they're picky about exact naming.
If MiniMax worked, try the 400 error in browser:
https://openrouter.ai/api/v1/models
Search for gpt-5 and use that exact ID. 🦐
@rapid hare what was the community consensus on this deal? I thought i saw some chatter
@exoteric7136 Can't see the image — what deal are you referring to? 🦐
{
"enabled": true,
"dmPolicy": "pairing",
"replyToMode": "all",
"groupPolicy": "open",
"streamMode": "partial"
}
Easiest way to configure tools (none were added not sure why) @rapid hare
On openrouter it is openai/gpt-5.2. So openrouter/openai/gpt-5.2 is correct, no?
@antonplex Config looks right. What model are you using? Some models don't stream properly.
Also check:
- Bot token in right place? Should be
botTokenin that same section or underaccounts.default - Did gateway fully restart?
pkill -f clawdbotthen start fresh
What do you see — no updates at all, or just slow/chunky updates? 🦐
Amps free $10 of frontier model usage
@pollie Yes, openrouter/openai/gpt-5.2 is correct format. If it's erroring:
- Check your OpenRouter balance/credits
- Try a different OpenRouter model to isolate if it's GPT-5.2 specific
- Check OpenRouter dashboard for error logs on their side
@.magicinternetmoney Add to config:
"agents": {
"defaults": {
"tools": {
"allowAll": true
}
}
}
Restart gateway. That enables all tools. 🦐
@exoteric7136 Ah, the Amps deal! I haven't seen a strong consensus here — some folks try free tiers, others stick with direct API. Free $10 is nice for testing though! 🦐
That seems like it's not a help related item?
@rapid hare still getting that cloud code error and not getting anti gravity despite following the OAuth steps rippp
Asking help from krill 😅
@froth_goblin Two separate issues:
1. Cloud Code error (schema bug) — needs the code fix in src/agents/bash-tools.ts, or wait for official patch
2. Antigravity OAuth on VPS — try API key instead:
- Get Gemini API key: https://aistudio.google.com/apikey
- Use
google/gemini-2.5-prowith API key auth instead of OAuth
OAuth on VPS is painful. API key is easier and works the same. Want help setting up the Gemini API key route instead? 🦐
Using Opus 4.5, not seeing any streaming, just regular messages
@exoteric7136 Happy to help with Clawdbot stuff! For general deals/promos, maybe #general is better fit. What Clawdbot issue can I help with? 🦐
@antonplex Opus supports streaming. Check if botToken is at the same level as streamMode:
cat ~/.clawdbot/clawdbot.json | jq '.telegram.botToken'
# Should return your token, not null
If botToken is nested differently than streamMode, they might not be connected. Share full telegram config structure (redact token):
cat ~/.clawdbot/clawdbot.json | jq '.telegram | keys'
🦐
@rapid hare halp
Cloud Code Assist API error (400): {
"error": {
"code": 400,
"message": "{"type":"error","error":{"type":"invalid_request_error","message":"tools.15.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12 (https://json-schema.org/draft/2020-12). Learn more about tool use at https://docs.claude.com/en/docs/tool-use.\"},\"request_id\":\"req_vrtx_011CWxrNF8CgmiN3t2weP8KV\"}",
"status": "INVALID_ARGUMENT"
}
}
What were my OAuth options for VPA
@.maxr. Same schema bug — known issue today. Fix in src/agents/bash-tools.ts:
Change stringEnum([...]) to Type.String({ description: "..." })
Then pnpm build. Or wait for official fix. 🦐
It returned my token
@antonplex Config looks correct then. Try:
- Full restart:
pkill -f clawdbot
pnpm run gateway
- Check thinking mode — streaming can be weird with thinking enabled:
/think off
Then test
-
Try
"block"mode instead of"partial"— some setups work better with block -
Version check — pull latest if not already
If still nothing, might be a bug with your specific setup. What version? npx clawdbot --version 🦐
@froth_goblin For VPS, avoid OAuth — use API keys:
Easy options:
- Gemini API: https://aistudio.google.com/apikey →
google/gemini-2.5-pro - OpenAI API: https://platform.openai.com/api-keys →
openai/gpt-5.2 - Anthropic API: https://console.anthropic.com →
anthropic/claude-opus-4-5 - OpenRouter: https://openrouter.ai/keys → access to everything
OAuth needs browsers = bad on VPS. API keys just work. Pick one, I'll help configure! 🦐
No, I wanna use OAuth lolol
@froth_goblin Stubborn! 😄 VPS OAuth options:
- Auth locally, copy to VPS:
# Local machine
npx clawdbot configure → do OAuth
scp -r ~/.clawdbot/auth/ user@vps:~/.clawdbot/
- SSH tunnel:
ssh -L 18788:localhost:18788 user@vps
# Run configure on VPS, open localhost:18788 locally
- X11 forwarding:
ssh -X user@vps
npx clawdbot configure
Option 1 is easiest — auth where you have a browser, copy creds to VPS. 🦐
@rapid hare why did my nano banana image gen tool break clawd can’t call it anymore 😢
@sirthomasripley Probably the same schema bug hitting everyone. Custom tools with enum/complex schemas are breaking.
Check if your tool has enums in its schema — if so, simplify to strings. Or wait for the official fix.
What error do you get when it tries to call it? 🦐
no dice
@.maxr. There might be multiple enum schemas — check other files too:
grep -r "stringEnum" src/
Fix all of them, not just bash-tools.ts. Or share the exact error — the tools.15 tells us which tool is broken. 🦐
mine too :)
rip
- Tried with thinking off, didn't work
- Tried block, didn't work
- Latest version from git
Anything else?
@rapid hare • pnpm build failed because tsx can't create its IPC pipe in /tmp in this environment:
Error: listen EPERM: operation not permitted /tmp/tsx-0/..•
tsc succeeded; the failure is the tsx scripts/canvas-a2ui-copy.ts step.
@antonplex Hmm, should work. Let's check:
- What auth method? OAuth or API key?
cat ~/.clawdbot/clawdbot.json | jq '.auth.profiles'
-
Check gateway output for streaming-related logs when you send a message
-
Try a fresh session:
/clear
Then test
If still nothing, might be a bug worth filing. Streaming works for others with same setup — something's different in yours. 🦐
@carloroyale_31743 Permission issue with /tmp. Try:
- Check /tmp permissions:
ls -la /tmp
- Use different temp dir:
TMPDIR=/var/tmp pnpm build
- Or skip that script temporarily — if
tscsucceeded, you can try running gateway anyway since the main compile worked
What environment? Docker? Restricted VPS? Something's blocking temp file creation. 🦐
no dice x2
@.maxr. Your error is different — if/then/all_of not just enums. That's conditional schema logic that Google Antigravity doesn't support.
This needs a bigger fix upstream. For now:
- Use a different provider (Anthropic API, OpenAI)
- Or wait for official patch
Sorry, no quick hack for this one. 🦐
VPS, was working until earlier today.
@carloroyale_31743 If it broke today:
- Check disk space:
df -h /tmp
- Check if /tmp got remounted restrictive:
mount | grep tmp
- Try the TMPDIR workaround:
TMPDIR=/var/tmp pnpm build
- Or just run gateway — if tsc worked, the core is built:
node dist/entry.js gateway
What VPS provider? Some do security updates that restrict /tmp. 🦐
Didn't work, and oauth.
@antonplex At this point, worth filing a GitHub issue with your full config (redact tokens). Something's specific to your setup.
Include:
- Telegram config
- Auth method
- Version
- What you've tried
Maybe someone can spot what's different. Sorry couldn't crack it! 🦐
here's the tool log
[DEBUG] Tool list:
[0] read
[1] edit
[2] write
[3] bash
[4] process
[5] whatsapp_login
[6] browser
[7] canvas
[8] nodes
[9] cron
[10] message
[11] gateway
[12] agents_list
[13] sessions_list
[14] sessions_history
[15] sessions_send
[16] sessions_spawn
[17] session_status
[DEBUG] Tool 15 schema: {
"type": "object",
"required": [
"message"
],
"properties": {
"sessionKey": {
"type": "string"
},
"label": {
"minLength": 1,
"maxLength": 64,
"type": "string"
},
"agentId": {
"minLength": 1,
"maxLength": 64,
"type": "string"
},
"message": {
"type": "string"
},
"timeoutSeconds": {
"minimum": 0,
"type": "number"
}
}
}
01:58:11 [agent/embedded] Profile google-antigravity:zzzzz@gmail.com hit Cloud Code Assist format error. Tool calls will be sanitized on retry.
@.maxr. Tool 15 is sessions_send — that schema looks fine actually. And I see it's auto-retrying with sanitization.
Did it work after the retry? The log shows "Tool calls will be sanitized on retry" — that's Clawdbot trying to fix it automatically.
If retries keep failing, the issue might be deeper in how Google Antigravity handles schemas. Try Anthropic or OpenAI to confirm it's provider-specific. 🦐
meh i guess i should sleep anyway
what would be the reason all of the agents suddenly lost all tools? @rapid hare
@.magicinternetmoney Same schema bug that's hitting everyone today — tool schemas being rejected by providers.
Check your config has tools enabled:
"agents": {
"defaults": {
"tools": {
"allowAll": true
}
}
}
If that's already there, it's the schema validation issue. Either:
- Wait for official fix
- Apply thoth's fix to
src/agents/bash-tools.ts(change stringEnum to Type.String) - Try different provider — some are pickier than others
What provider/model are you using? 🦐
anthropic..
@.magicinternetmoney Anthropic usually handles schemas fine. What's the actual error?
# Check logs
tail -50 ~/.clawdbot/logs/gateway.log | grep -i "error\|tool"
Could be:
- OAuth restriction ("only authorized for Claude Code")
- Rate limit (429)
- Different issue than the schema bug
What error message do you see? 🦐
For whatsapp, I am supposed to use a second account right? Can I get a second one with Google voice number ?
@.shmoogy You link your existing WhatsApp account — no second account needed. Clawdbot connects via WhatsApp Web (scan QR with your phone).
If you WANT a separate bot number:
- Google Voice: hit or miss — WhatsApp often bans VoIP numbers
- Better options: cheap prepaid SIM, or eSIM service
But most people just use their main WhatsApp. The bot sees your messages and can respond in your chats. 🦐
@rapid hare Best way to start gateway in CLI only mode so it stays persistent? This is what I am doing, is this ok?
nohup pnpm clawdbot gateway --port 18789 > /tmp/clawdbot/clawdbot-gateway.log 2>&1 &
@antonplex That works! But better options:
1. systemd (recommended for VPS):
# Create service file
sudo nano /etc/systemd/system/clawdbot.service
[Unit]
Description=Clawdbot Gateway
After=network.target
[Service]
Type=simple
User=youruser
WorkingDirectory=/path/to/clawdbot
ExecStart=/usr/bin/pnpm clawdbot gateway --port 18789
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable clawdbot
sudo systemctl start clawdbot
2. tmux/screen (simpler):
tmux new -s clawdbot
pnpm clawdbot gateway --port 18789
# Ctrl+B, D to detach
3. pm2:
npm i -g pm2
pm2 start "pnpm clawdbot gateway --port 18789" --name clawdbot
pm2 save
Your nohup is fine for quick stuff, but systemd auto-restarts on crash. 🦐
Is this fine for my personal macbook pro, no vps.
@antonplex For personal Mac:
Easiest: Just run in terminal or tmux — close lid = it sleeps anyway
If you want auto-start on login:
# Create launch agent
nano ~/Library/LaunchAgents/com.clawdbot.gateway.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.clawdbot.gateway</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/pnpm</string>
<string>clawdbot</string>
<string>gateway</string>
</array>
<key>WorkingDirectory</key>
<string>/path/to/clawdbot</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
But honestly for personal Mac, tmux or just a terminal window is fine. Your nohup works too! 🦐
What is best for a robust restart and automatic restart on crash?
@antonplex On Mac, either:
1. launchd (native, what I showed) — add <key>KeepAlive</key><true/> for auto-restart
2. pm2 (simpler):
npm i -g pm2
pm2 start "pnpm clawdbot gateway" --name clawdbot
pm2 startup # generates launchd config
pm2 save
pm2 is easier to manage, launchd is more "Mac native". Both auto-restart on crash. I'd go pm2 for simplicity. 🦐
@rapid hare Are we aware of these build issues?
src/msteams/attachments.ts:744:13 - error TS2741: Property 'preconnect' is missing in type '(input: URL | RequestInfo) => Promise<Response>' but required in type 'typeof fetch'.
744 const fetchImpl: typeof fetch = (input) => {
~~~~~~~~~
node_modules/bun-types/globals.d.ts:1951:19
1951 export function preconnect(
~~~~~~~~~~
'preconnect' is declared here.
src/slack/monitor.ts:358:13 - error TS2741: Property 'preconnect' is missing in type '(input: URL | RequestInfo, init: RequestInit | BunFetchRequestInit | undefined) => Promise<Response>' but required in type 'typeof fetch'.
358 const fetchImpl: typeof fetch = (input, init) => {
~~~~~~~~~
node_modules/bun-types/globals.d.ts:1951:19
1951 export function preconnect(
~~~~~~~~~~
'preconnect' is declared here.
Found 2 errors in 2 files.
Errors Files
1 src/msteams/attachments.ts:744
1 src/slack/monitor.ts:358
ELIFECYCLE Command failed with exit code 1.
@pollie That's a bun-types version mismatch issue — not the schema bug.
Quick workaround:
# Try removing bun-types temporarily or pinning version
pnpm remove bun-types
# or
pnpm add bun-types@1.1.0 # older version
Then rebuild.
Or add // @ts-ignore above those lines if you just want to get running.
@steipete ^ bun-types version issue causing build failures — preconnect missing on fetch type. 🦐
@rapid hare how to fix this issues were the bot cant use tools like "I call: Read, Bash (capitalized)
Error says: Tool read not found, Tool bash not found (lowercase)"
@pixexid Tool name case mismatch — the model is calling Read/Bash but tools are registered as read/bash.
Check your config:
"agents": {
"defaults": {
"tools": {
"allowAll": true
}
}
}
If using a custom allow list, use lowercase:
"tools": {
"allow": ["read", "bash", "write", "edit"]
}
Or might be a model issue — some models don't respect exact tool names. What provider/model?
Pull latest and restart — there may have been a fix for tool name normalization. 🦐
❯ pnpm remove bun-types
ERR_PNPM_CANNOT_REMOVE_MISSING_DEPS Cannot remove 'bun-types': no such dependency found
❯ pnpm add bun-types@1.1.0
ERR_PNPM_ADDING_TO_ROOT Running this command will add the dependency to the workspace root, which might not be what you want - if you really meant it, make it explicit by running this command again with the -w flag (or --workspace-root). If you don't want to see this warning anymore, you may set the ignore-workspace-root-check setting to true.
@pollie Add the workspace flag:
pnpm add -w bun-types@1.1.0
Or if it's a dev dependency:
pnpm add -wD bun-types@1.1.0
Then pnpm build 🦐
Fix is WIP
working on latest main.
idk what changed tbh lol
still no dice for me
@.maxr. Google Antigravity is pickiest. If others work on latest main but you don't, try switching providers temporarily while the Antigravity-specific fixes land. 🦐
this is a bug that is being addressed here: https://github.com/clawdbot/clawdbot/pull/635
u sure that you're on latest main and rebuilt it?
all models in antigravity are working here :)
@.maxr. @pixexid @mukhtharcm @mahmoud289 ^ PR #635 addresses the tool issues. Watch that for the fix! 🦐
@.maxr. If build errored, it might not have compiled correctly. What's the TS error? Could be the bun-types issue pollie hit — try:
pnpm add -wD bun-types@1.1.0
pnpm build
🦐
clawd keeps notifying me via telegram that my llm request was rejected: this credential is only authorized..., and I have been trying to close the gateway but it is apparently not running. I can however access it via 127.0.0.1/... how do I shut it down
if you want to apply the fix on your working dev repo real quick, its a one liner:
@adf2157 Gateway is running somewhere. Find and kill it:
# Find what's on the port
lsof -i :18789
# or
netstat -tlnp | grep 18789
# Kill by port
kill $(lsof -t -i :18789)
# Or find node processes
ps aux | grep node
pkill -f "clawdbot\|gateway"
For the credential error — that's the Claude Code OAuth restriction. You need an API key, not OAuth. 🦐
@rapid hare the skill has
Set environment variable:
TMDB_API_KEY: Your TMDb API key (free at themoviedb.org)
@jordyvd Set the env var before starting gateway:
export TMDB_API_KEY="your-key-here"
pnpm run gateway
Or add to your shell profile (~/.bashrc or ~/.zshrc):
echo 'export TMDB_API_KEY="your-key-here"' >> ~/.zshrc
source ~/.zshrc
Or in systemd service file if using that. The skill reads from env, not config. 🦐
How can i update the skill to read from config
@jordyvd Edit the skill's code to read from config instead. In the skill's main file, change:
// From:
const apiKey = process.env.TMDB_API_KEY;
// To:
const apiKey = process.env.TMDB_API_KEY || config.skills?.tmdb?.apiKey;
Or check how the skill loads — look at its SKILL.md and main entry file. Skills can access config if they're wired up for it.
Where's your skill located? ~/.clawdbot/skills/tmdb/? 🦐
@rapid hare has anyone tested gpt 5.2 vs gpt 5.2 codex?
@jordyvd They're the same model, different auth:
openai/gpt-5.2— API key authopenai-codex/gpt-5.2— ChatGPT/Codex OAuth auth
Same capabilities, different billing/limits. Codex uses your ChatGPT Plus quota, API uses your API balance. 🦐
@rapid hare these are available models
• openai-codex/gpt-5.1
• openai-codex/gpt-5.1-codex-max
• openai-codex/gpt-5.1-codex-mini
• openai-codex/gpt-5.2
• openai-codex/gpt-5.2-codex
@jordyvd Ah, the -codex suffix variants! Those might be optimized for coding tasks vs general.
Try both and see what works better for your use case. gpt-5.2-codex is probably tuned for code/tool use, gpt-5.2 for general chat.
No hard data, but -codex variants usually excel at structured outputs and tool calls. 🦐
Gotcha, so no real-world testing has been done?
@jordyvd Not that I'm aware of — community's been focused on bugs today 😅
Be the guinea pig and report back! Would be useful data. 🦐
wasn't there an update that allowed me to enter minimax api key into wizard? i don't see it
@michaelhmiv Should be there! Run:
npx clawdbot configure
Look for:
- "MiniMax M2.1 (minimax.io)"
- "MiniMax API (platform.minimax.io)"
If not showing, pull latest:
git pull && pnpm install && pnpm build
What version are you on? 🦐
oh hey this looks like antigravity bug i had the other day lol
you guys think its overall better to create Skills when possible instead of getting it to save everything in TOOLS.md?
Yes
ya i figured.
Been working for me
i can just see problems arising
It gets a list of all of its skills when it first starts a session
did you ask it to write its own skills or?
im about to ask it to port everything over
Yep
It published them to claudhub too
interesting
Clawdbots are really good at modifying themselves
@rapid hare each sessions chats are stored locally?
Oh lol using 5-2 or 5-2-codex makes 0 difference. /stats/ shows the exact same model
@rapid hare jacobgiebel@Jacobs-MacBook-Pro clawdbot % clawdbot onboard
172637 | var require_clipboard_darwin_universal = __commonJS((exports2, module4) => {
172638 | module4.exports = require("/$bunfs/root/clipboard.darwin-universal-hgccz1vv.node");
172639 | });
172640 |
172641 | // ../../node_modules/@mariozechner/clipboard-darwin-arm64/clipboard.darwin-arm64.node
172642 | module4.exports = require("/$bunfs/root/clipboard.darwin-arm64-mwpv5hbh.node");
^
error: dlopen(/private/tmp/.1bfbbef3f4cff2de-00000001.node, 0x0001): tried: '/private/tmp/.1bfbbef3f4cff2de-00000001.node' (code signature in <15D9E056-2546-3F17-B66D-EECDFB0D5B49> '/private/tmp/.1bfbbef3f4cff2de-00000001.node' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/System/Volumes/Preboot/Cryptexes/OS/private/tmp/.1bfbbef3f4cff2de-00000001.node' (no such file), '/private/tmp/.1bfbbef3f4cff2de-00000001.node' (code signature in <15D9E056-2546-3F17-B66D-EECDFB0D5B49> '/private/tmp/.1bfbbef3f4cff2de-00000001.node' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs)
code: "ERR_DLOPEN_FAILED"
at <anonymous> (/$bunfs/root/clawdbot-arm64:172642:28)
at <anonymous> (/$bunfs/root/clawdbot-arm64:34:49)
at <anonymous> (/$bunfs/root/clawdbot-arm64:172769:61)
at <anonymous> (/$bunfs/root/clawdbot-arm64:34:49)
at <anonymous> (/$bunfs/root/clawdbot-arm64:173029:47)
at <anonymous> (/$bunfs/root/clawdbot-arm64:44:48)
at <anonymous> (/$bunfs/root/clawdbot-arm64:173080:23)
at <anonymous> (/$bunfs/root/clawdbot-arm64:44:48)
at <anonymous> (/$bunfs/root/clawdbot-arm64:178807:17)
sir this is a wendys
You can always tell it to clean it up, I have mine, always commit and pushes to a git repo so I can roll it back and make changes transparently without losing anything
429 {"type":"error","error":{"type":"rate_limit_error","message":"This request would exceed your account's rate limit. Please try again later."},"request_id":"req_011CWxwa9ajvpHHy62UKRsMW"}
yes i do the same thing
429 {"type":"error","error":{"type":"rate_limit_error","message":"This request would exceed your account's rate limit. Please try again later."},"request_id":"req_011CWxwgzA9dGziWyMZ8Xvqa"}
but now i have skills for hubspot , bamboohr, jira, etc etc i dont want all that crap living in tools.md but its also all important so , cant trim any of it.
429 {"type":"error","error":{"type":"rate_limit_error","message":"This request would exceed your account's rate limit. Please try again later."},"request_id":"req_011CWxwk5dtNZv611M5RmmG1"}
Invalid schema for function 'gateway': schema must have type 'object' and not have 'oneOf'/'anyOf'/'allOf'/'enum'/'not' at the top level.
hmm
@chints1819 Yes! Sessions stored in ~/.clawdbot/agents/*/sessions/
@.magicinternetmoney Code signing issue on Mac. Try:
xattr -cr /private/tmp/
# or use npx instead of global install
npx clawdbot onboard
If still broken, try from source instead of binary.
@jordyvd Same schema bug — PR #635 is the fix. Pull latest or wait for merge. 🦐
@rapid hare How does the signal-cli integration work? Can it be used to query messages in the same way whatsapp can? I notice it can read my contacts and groups but can it read the messages?
@milkytaste Signal integration receives messages in real-time — when someone sends you a message, Clawdbot sees it and can respond.
It works similarly to WhatsApp/Telegram:
- ✅ Receive incoming messages
- ✅ Send replies
- ✅ Access contacts/groups
- ❌ Query historical messages (Signal doesn't expose message history via API)
So it's real-time messaging, not historical search. Clawdbot responds to new messages as they come in. Does that answer your question? 🦐
@rapid hare How can I write a skill to maintain a message history? I don't want the integration for question/answer, only for read and write based skills.
Krill's rate limited. Sorry. Please check out our git repo and start a local coding agent and ask what you like to know. This will yield better results since they can access your config.'
Thanks. I'm new to this. Still trying to get everything hooked up
For starting this is good: https://docs.clawd.bot/start/getting-started
Thanks. I have whatsapp and discord sorted. Signal is connected too but I only want it for reading messages and writing. I don't want signal chats to talk to the bot
I got an idea
@rapid hare why this?
{"type":"message","id":"240e8b1a","parentId":"ac655fe9","timestamp":"2026-01-10T03:02:10.646Z","message":{"role":"assistant","content":[],"api":"openai-responses","provider":"openai","model":"gpt-5.1","usage":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"totalTokens":0,"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0,"total":0}},"stopReason":"error","timestamp":1768014130057,"errorMessage":"400 Invalid schema for function 'gateway': schema must have type 'object' and not have 'oneOf'/'anyOf'/'allOf'/'enum'/'not' at the top level."}}
@rapid hare you there?
Clawd going down has the same problems as Twitter
Where do I go to ask about the problem lmfao
What to do with " "This credential is only authorized for use with Claude Code and cannot be used for other API requests."
" @rapid hare
Krill is currently down. But if you upgrade to the latest version it should be fixed
@rapid hare Why is my clawdbot saying that his tools are not available?
Tools are back!! @rapid hare celebrate
Somehow unable to get it working with OpenAI models. Complains call_id for tool is too long.
I'm having the same issue, ran npm install -g clawdbot@latest but still the same problem. Is the latest fix not packaged yet or am I missing something else?
@west ore run
git pull
pnpm install
pnpm build
pnpm ui:build # auto-installs UI deps on first run
pnpm clawdbot doctor
pnpm clawdbot health
to upgrade. The issue is fixed.
Are there instructions to build the Mac app? Is it in a separate repository?
is there any way I can force my clawdbot to only work on workspace folder?
It' creating and editing files in the clawdbot repo itself sometimes?
@stray viper https://docs.clawd.bot/platforms/macos for instructions, it's all in the same repo
Thanks @winter snow !
@rapid hare with the new update how to I set it to auto fail over to MiniMax oauth if I have Anthropic oauth as the primary now
@rapid hare is antigravity oauth still working?
anybody else having issues with zai/glm4.7?
The problem: The GLM-4.7 model from Zhipu AI (z.ai) is not returning tool calls through the proper tool_calls field in the API response. Instead, it's generating XML-like <tool_call> tags directly in the text content, which is a non-standard behavior.
@rapid hare is ded
Mac app immediately crashes for me:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'bundleProxyForCurrentProcess is nil: mainBundle.bundleURL
Curious if anyone else is seeing this
@rapid hare I am on ubuntu running via pnpm run clawdbot daemon start originally confirured via pnpm run clawdbot onboard --install-daemon. I am asking the bot to get me a screenshot by browsing to a site and it looks like browser control is not working.
Last message from the bot trying to fix this for me is
Good news: I fixed the daemon mismatch — the systemd service now runs dist/entry.js (was dist/index.js ) and the gateway restarted cleanly.
Bad news: the browser control API is still not exposing a working /start :
• GET http://127.0.0.1:18791/ works (returns JSON status)
• GET /start is still 404
• POST /start still times out
• clawdbot browser start still fails (can’t reach /start )So browsing/screenshot automation is still blocked until the browser control server is corrected.
Next quickest diagnostic: can you open http://127.0.0.1:18791/ in your own browser and tell me what routes/endpoints it documents (if any)? Alternatively, I can inspect the gateway config for the browser section and see if the control URL/profile is misconfigured.
I'm still getting issues with Opus.....
It was working....until about 5 minutes ago... 😠 😡
LLM request rejected: This credential is only authorized for use with Claude Code and cannot be used for other API requests.
[gws] ⇄ res ✓ chat.send 597ms runId=8472fb10-aa2c-4510-98d1-6ef098368eb9 conn=57c1073b…0625 id=03d54c0e…43ac
LLM request rejected: This credential is only authorized for use with Claude Code and cannot be used for other API requests.
[gws] ⇄ res ✓ chat.send 485ms runId=2a131770-8333-4b13-ba7c-1f157bf25436 conn=57c1073b…0625 id=a8accb9e…3d6a
@rapid hare any advice?
@rapid hare Embedded agent failed before reply: Unknown model: zai/glm-4.7
welp the doctor command completely erased my clawdbot.json file
This is why we don't trust doctors these days 😂
thankfully I had not so long ago asked it to modify the config so I managed to recover an not super old version from the sessions 💪
hey @rapid hare, how do i fix this:
Cloud Code Assist API error (400): {
"error": {
"code": 400,
"message": "{\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"tools.15.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12 (https://json-schema.org/draft/2020-12). Learn more about tool use at https://docs.claude.com/en/docs/tool-use.\"},\"request_id\":\"req_vrtx_011CWyB1CfzVTdPUiw9TETwz\"}",
"status": "INVALID_ARGUMENT"
}
}
fyi i just installed clawdbot and set it up with Google Antigravity OAuth and What's App
@rapid hare on the onboard how do I configure OpenRouter
@rapid hare my gateway.error.log keeps printing this: [cron] failed to start: TypeError: Cannot read properties of undefined
how do I even debug that
Could maybe start here .clawdbot/cron/jobs.json
Krill is offline for a few hours, try the search function - many questions have been answered above
i'm noticing it seems like the commands i try int he TUI cause it to lag indefinetly in warp
has anyone made the Remind Me skill work? whatever I try, I can't make any cron jobs work. clawdbot keeps complaining that it "saw the system message" but didn't react to it. any clues?
I have a pretty old QNAP NAS in my cellar. Did anyone try to install clawd on such a setup?
Can someone help with this.
I have my agent in multiple telegram groups for different work themes.
/status in different groups ran at the same time shows different models
How’s that possible
status command is session-scoped. notice the different session names in each group/topic
Oh so all groups are different sessions!!!
didn’t know that been really struggling with my sessions.
@regal umbra best practice to deal with this ?
My agent today doesn’t remember anything we talked about yesterday
Hello! I am new here. I like the project, and I have many ideas for what to do with this bot.
One of the ideas is that I want to use it as a chatbot in a WhatsApp group (150 members) for students. I am the admin and want to integrate it. Is it safe? How can I do it safely? I only want it to interact with the members and help them.
I think the best practices are all being figured out 🙂
I have a nightly cron to read the day’s activity and update memory files and anytime mine forgets stuff I prompt it to remember/read memory. Similar to what’s beingmentioned here: #general message
I have a TrueNAS SCALE server. Can I run it there, but in a safe area?
good morning! anyone experiencing messaging issues with minimax coding plan?
I copied the API key, but my bot says:
400 invalid params, tool call id is invalid (2013)
I meant more around how my sessions gets to more 200k context and crashes and refuses to start up.
I have to go use Claude code to debug and move session files so I can restart
Happened twice yesterday.
@regal umbra
antigravity isn't working, either
Cloud Code Assist API error (400): {
"error": {
"code": 400,
"message": "{"type":"error","error":{"type":"invalid_request_error","message":"tools.15.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12 (https://json-schema.org/draft/2020-12). Learn more about tool use at https://docs.claude.com/en/docs/tool-use.\"},\"request_id\":\"req_vrtx_011CWyHg1dG3NRmPfXLPoxRb\"}",
"status": "INVALID_ARGUMENT"
}
}
I switched the model from Opus to Sonnet, and then I realized there was a remaining task to do on Opus, so I switched back from Sonnet to Opus, now @supple lark gave an error: "⚠️ Agent failed before reply: Unknown model: anthropic/claude-opus-20240229. Check gateway logs for details." How can I fix this?
okay please disregard my message. Looks like a typo in the model prefix. can fix it easily
Either put it directly in a Docker container or run it sandboxed (you can set it in the configuration). Sandboxed is also using Docker but one container per session
yep, get the same error
@rapid hare when a mac node wants to connect to a remote gateway over tailner (gateway binds on loopback) - what should the config on the mac side be?
@deft wigeon what a lovely surprise! Thank you!
Hi, the bot complains about no shell availability from a Discord channel (it is the same via DMs). Does anyone know what needs to be configured to get rid of that? I did not have this problem before...
Can someone help me install it step by step? I don't know how to install the unofficial app Clawbot.
◇ Where will the Gateway run?
│ Local (this machine)
│
◇ Select sections to configure
│ Model/auth, Providers, Skills, Health check
│
◇ Model/auth choice
│ OpenAI Codex OAuth (Codex CLI)
│
◆ Default model (blank to keep)
│ anthropic/claude-sonnet-4-20250514█
└
npm i -g clawdbot@latest (or pnpm if you prefer)
or pull from source and build.
You can spin up Claude Code or Codex to help you with the whole thing!
Or are you talking about your NAS? Then you need a terminal on there to install
Yes, I am on my TrueNAS SCALE system
Okay, well, get a terminal on there and then follow the steps I sent!
could we on config please get the default model to match the auth choice?
Anyone else having issues with the cron functionality on Linux? I'm finding everyone works great but the cron stuff. e.g. if I say "message me in 12 minutes" clawdbot gets all excited and says it's created a cron entry (and it has), but none ever fire. On the admin dashboard the cron page lists the entries, but the last run section at the bottom is always empty. It seems the heartbeat 'runs' pick up the cron stuff to do so things kind of work, but not exactly how they should.
*everything works great
I did not dive in deeper, but there might already be a PR for it.
For whatever reason, the second fallback isn't used. I setup codex for that, but it's never being tried.
am I the only one experiencing the browser automation hanging?
on truenas scale you cant install with npm commant.
Good morning,
Is anyone else receiving the internal heartbeat message? Started to get these all of a sudden
You can run Docker on the NAS, but it's not as straightforward if you don't have experience with it. Can you ask any AI assistant to help you with it?
Add this to the HEARTBEAT.md file:
On heartbeats, ONLY message me if:
- Something requires MY action
- There's an urgent alert I need to see
- A scheduled task failed
Do NOT message me for:
- Status updates that need no action
- "FYI" information
- Things I'm already handling
If nothing needs my attention → reply ONLY with HEARTBEAT_OK
If in doubt → HEARTBEAT_OK (silence is golden)
Thanks! I'll give that at ry
Hi, I have a weird problem where the tools like bash or read/write are not available (even in elevated mode): "Tool bash not found"
is there a way to stop my bot printing out it's full thinking logic as the reply to my message? At the moment I'm getting the full thinking monologue back in the reply
Clawd is running on macos, and it used to work just fine. Has anyone else seen such a problem?
thew should be fixed in the updates from yesterday. It was happening a lot that I put a local patch in for but someone else raised a full PR for it and it's in the lates pulls. I've checked it this morning and it's working currently for me
yeah, thought so do. did a git pull this morning and updated it to 920b3880 / 2026.1.10, but the errors persis 😕
that's odd, unless it's just happened again. I'll have a see cause I've just thrown a message to my bot
I'm getting the same
Most recent changes solved it it seems, I updated like 10 hours ago but more recent changes have been made:
git pull
pnpm install
pnpm build
pnpm ui:build # auto-installs UI deps on first run
pnpm clawdbot doctor
pnpm clawdbot health
Clawd thanks you for your help @fringe crater 😄
Thanks @copper tangle
Falling in love with my clawdbot and now I want to have like hourly snapshot backup of my vps so that in a scenario something breaks, I can go back to the state of previous hour. Or is it overkill to snapshot the vps and I just need to backup a few files?
i'm still getting
Cloud Code Assist API error (400): {
"error": {
"code": 400,
"message": "{"type":"error","error":{"type":"invalid_request_error","message":"tools.15.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12 (https://json-schema.org/draft/2020-12). Learn more about tool use at https://docs.claude.com/en/docs/tool-use.\"},\"request_id\":\"req_vrtx_011CWyacWibL5BNF5RqXVYs2\"}",
"status": "INVALID_ARGUMENT"
}
}
🥲
I have the following cron job set up to run daily:
Create a backup by staging any pending changes or add new files (ignore files larger than 5MB) and commit them, next push them up to github. Use the github cli to push the changes. In the commit message write a brief summary of the changes.
So it commits all the changes in the workspace like memory, agent, heartbeat etc.
@rapid hare help
11:06:55 [agent/embedded] === SCHEMA ERROR DETAILS ===
11:06:55 [agent/embedded] Problematic tool #15: sessions_send
11:06:55 [agent/embedded] Tool schema: {
"type": "object",
"required": [
"message"
],
"properties": {
"sessionKey": {
"type": "string"
},
"label": {
"minLength": 1,
"maxLength": 64,
"type": "string"
},
"agentId": {
"minLength": 1,
"maxLength": 64,
"type": "string"
},
"message": {
"type": "string"
},
"timeoutSeconds": {
"minimum": 0,
"type": "number"
}
}
}
11:06:55 [agent/embedded] === END SCHEMA ERROR ===
11:06:55 [agent/embedded] Full error message: Cloud Code Assist API error (400): {
"error": {
"code": 400,
"message": "{\"type\":\"error\",\"error\":{\"type\":\"invalid_request_error\",\"message\":\"tools.15.custom.input_schema: JSON schema is invalid. It must match JSON Schema draft 2020-12 (https://json-schema.org/draft/2020-12). Learn more about tool use at https://docs.claude.com/en/docs/tool-use.\"},\"request_id\":\"req_vrtx_011CWybC7igxTLKjLyZTSzMC\"}",
"status": "INVALID_ARGUMENT"
}
}
Thank you! Any reason why you asked to ignore files above 5mb?
Just a safe guard, the workspace should not contain files that size I believe and just want to prevent it from trying to commit 2GB files if it decided to download something into the workspace itself
it's not working 😕
400 invalid params, tool call id is invalid (2013)
11:11:08 [agent/embedded] Profile google-antigravity:xx@xx hit Cloud Code Assist format error. Tool calls will be sanitized on retry.
11:11:11 [agent/embedded] Profile anthropic:default hit Cloud Code Assist format error. Tool calls will be sanitized on retry.
11:11:20 [agent/embedded] Profile google-antigravity:xx@xx hit Cloud Code Assist format error. Tool calls will be sanitized on retry.
and in addition it seems to only try the first fallback, not the other ones I have defined:
"primary": "anthropic/claude-opus-4-5",
"fallbacks": [
"google-antigravity/claude-opus-4-5-thinking",
"minimax/MiniMax-M2.1",
"openai-codex/gpt-5.2"
],
},```
Got it! Appreciate so much
in case anyone is getting the same issue with antigravity
opus fixed the opus, my clawd is back 🚀
Hey @rapid hare ,
I messed up in transferring my clawd from macbook to mac mini.
He now tells me that he lost bash access on the new machine. Can you please guide me to troubleshoot ?
Krill offline. Best to ask claude code or codex to troubleshoot if you’ve got it
thanks mate, I need to top up as I used all my codex credit 🙈

hey guys
how do i fix clawdbot?
@rapid hare help This is what happened.
⚠️ Agent failed before reply: OAuth token refresh failed for anthropic: Failed to refresh OAuth token for anthropic. Please try again or re-authenticate.. Check gateway logs for details.
-- fixed this by reauthenticiation, now getting this:
LLM request rejected: This credential is only authorized for use with Claude Code and cannot be used for other API requests.
update your clawbot to the latest version. Should be fixed thenb
tried updating, not sure if it's still working for me
this is what I see ^
what am I doing wrong?
git pull
pnpm install
pnpm build
pnpm ui:build # auto-installs UI deps on first run
pnpm clawdbot doctor
pnpm clawdbot health
@rapid hare so can we still use claude max to auth or no?
yes
and then restart the gateway, no?
Guys use your local agent. Krill is taking a nap.
exactly
does anyone know if something has changed at Google side with the way useage is tracked and displayed within the last few hours. I've got this extension in antigravity IDE that shows usage and all of a sudden now Claude use through AG has a reset timeline of 48 hours rather than the 5 hours it was earlier.
and codexbar app on Mac has stopped updating as well. The last update was an hour ago
any ideas how to debug this, anyone else getting it
@rapid hare which is the better way to allow clawd to run sudo like for example install dependencies in a VPS env (Ubuntu)
They changed it to be weekly for power user's
Where do I define the heartbeat interval if not using the Mac app?
How are you all handling custom skills in Clawd?
Are you stashing and pulling and then restoring?
Feel like Clawd needs a custom workspace that is gitignored?
didn't realise I'd moved into the power users category
bleh.. anyone else getting "JSON schema is invalid" 400 errors with Antigravity? I pulled the latest from main but no luck...
The go in the clawd workspace, not in the repo
yeah, trying to figure out the issue
skills ->https://clawdhub.com/ - they are token cheap so you can have many
ok @supple lark made updates based on your suggestions https://github.com/wolffan/clawdbot/pull/1/files
Interesting: the telegram in --provider telegram is not being parsed properly… Is this a known thing or am I doing something wrong? 😅
❯ npm run clawdbot pairing approve --provider telegram
npm warn "telegram" is being parsed as a normal command line argument.
npm warn Unknown cli config "--provider". This will stop working in the next major version of npm.
npm warn Unknown project config "allow-build-scripts". This will stop working in the next major version of npm.
> clawdbot@2026.1.10 clawdbot
> tsx src/entry.ts pairing approve telegram
error: required option '--provider <provider>' not specified
are you on latest?
@rapid hare
Not sure if it's okay now, but when claude code token runs out and fallbacks to codex, even if the communcation works well for both, but the errors (due to no token left for claude) coming from claude makes really noisy the chat
is this the normal way of working?
@rapid hare do we support transcribing WhatsApp voice notes? Is so how?
does clawdbot work with minimax coding plan?
Didn’t know there was such a thing I’ll look into it thanks
How do you all spawn multiple sessions on the same device ?
Like multiple clawdbots running on different gateway ports connected to different telegram bots ?
yes, it uses whisper or whisper.cpp to transcribe and then processes your message as normal. you can ask your clawd about it if it’s not working as expected
one clawdbot, telegram with topics. each topic is a separate session. can do the same with discord channels
Have you succeeded to setup topic as different sessions? It seems impossible with Telegram api few days ago
not sure what you mean? I just have a group chat with my clawd and every topic gets a fresh session/context window so we’re chatting about different things simultaneously
Hmmm I see! I thought you created a group with topics on it.
I personally did one group for each topic because it was not possible to have one unique group with topics in it
that works too! but did you check that topics were enabled in the group itself? I’m actually new to telegram and didn’t know it’s something you enable on a per-group basis
oh yeah each channel in discord or topic in telegram will work just fine!
Yes I had that setup but impossible to separate sessions as groups topic don’t have a separate id on the telegram api
I've got one group in telegram and one in discord both working great
syntax is a. lil different now, remove the -- before telegram
@rapid hare i have a problem, after rerunning the clawdbot from npx on dev mode it seems even after running onboarding i can't connect telegram, i get [Echo] 400 Incorrect role information from it (echo is the name of the helper)
@rapid hare Don't really want to get my anthropic account potentially in trouble - what's the best second integration codex or copilot for sonnet? I tried using OpenRouter for Claude models but it's going to be way more money than I hoped, I burned $5 in a few prompts