#Bot không có exec tool
1 messages · Page 1 of 1 (latest)
@jade patrol marked this post as solved via https://discord.com/channels/1456350064065904867/1479392116294549565
@jade patrol marked this post as solved via https://discord.com/channels/1456350064065904867/1479468289506672831
Cái “không có quyền” khi bạn nhờ bot Telegram chạy lệnh trên VPS thường rơi vào 1 trong 2 nhóm sau (cách fix khác nhau):
1) OpenClaw đang chặn tool exec (tool policy / sandbox)
Dấu hiệu hay gặp: bot trả kiểu “exec tool not allowed / blocked / missing permission …”.
Kiểm tra nhanh trên VPS (máy đang chạy Gateway):
openclaw --version
openclaw sandbox explain
Nếu bạn đang bật hạn chế tools (ví dụ tools.profile: "messaging" hoặc có tools.allow không chứa runtime), thì exec sẽ bị chặn.
Cách bật lại exec: sửa ~/.openclaw/openclaw.json (JSON5), ví dụ một cấu hình “vừa đủ để chạy lệnh”:
{
tools: { profile: "coding" } // profile này bao gồm group:runtime => exec/process/bash
}
Hoặc nếu bạn đã dùng allowlist (tools.allow), đảm bảo có exec (hoặc group:runtime):
{
tools: { allow: ["group:runtime"] }
}
Lưu ý quan trọng: nếu bạn đang chạy trong group chat Telegram và config sandbox kiểu "non-main" thì group có thể bị sandbox → exec trong sandbox có thể bị chặn riêng. Khi đó hoặc:
- chạy lệnh trong DM (main session) thay vì group, hoặc
- nới sandbox tool policy (cái này rủi ro hơn trong group).
Docs liên quan:
- Tools allow/deny: https://docs.openclaw.ai/tools
- Sandbox vs tool policy vs elevated: https://docs.openclaw.ai/gateway/sandbox-vs-tool-policy-vs-elevated
2) VPS báo Linux permission denied (sudo/OS permission), không phải OpenClaw
Dấu hiệu: output kiểu Permission denied, sudo: a password is required, không ghi “tool blocked”.
Trường hợp này là quyền của user chạy Gateway (thường không phải root). Với các lệnh cần root (apt, systemctl, sửa /etc…), khuyến nghị làm thủ công qua SSH thay vì “cho bot sudo” (rất dễ toang nếu prompt injection).
Để mình chẩn đoán đúng 1 phát:
Bạn paste giúp nguyên văn dòng lỗi bot trả về (hoặc 5–10 dòng log quanh đó) + output:
openclaw --version
openclaw sandbox explain
và cho biết bạn đang nhắn bot ở DM hay group trên Telegram.
tools: { profile: "coding" } file của tôi đã sửa như này nhưng vẫn bị lỗi
"tools": {
"profile": "coding",
"elevated": {
"enabled": true,
"allowFrom": {
"telegram": ["7997416485"]
}
}
}, đây là file json của t
đây là file json của tôi
tools.profile: "coding" chỉ đảm bảo model “được phép thấy + gọi tool exec” thôi — nhưng exec còn 2 cái hay gây “không có quyền” nữa:
- Exec đang chạy vào
host=sandbox(mặc định) trong khi bạn chưa bật sandbox (Docker) - Exec approvals / allowlist đang chặn (đặc biệt trên VPS headless không có UI để bấm Approve)
Dựa trên snippet bạn gửi (bạn đang bật elevated), khả năng cao là bạn đang ở case (1) hoặc (2).
A) Nếu bạn KHÔNG chạy sandbox (đa số VPS)
Mặc định exec.host là "sandbox", và khi sandboxing off thì host=sandbox sẽ fail closed.
Thử set hẳn exec chạy trên gateway host:
{
tools: {
profile: "coding",
exec: {
host: "gateway",
security: "allowlist",
ask: "on-miss"
}
}
}
Sau đó restart gateway để chắc chắn nó ăn config:
openclaw gateway restart
B) Nếu vẫn bị “no permission” sau đó: là do Exec approvals đang deny
Trên VPS headless thường không có UI để approve, nên nếu ask=on-miss mà lệnh chưa nằm trong allowlist thì nó sẽ rơi về askFallback=deny → nhìn như “không có quyền”.
Bạn cần kiểm tra file này trên VPS:
~/.openclaw/exec-approvals.json
Và thêm allowlist phù hợp (hoặc hạ policy — nhưng mình không khuyến nghị security=full ask=off trên bot nhận chat vì rất nguy hiểm).
Docs: https://docs.openclaw.ai/tools/exec-approvals
C) Bonus: elevated của bạn có thể đang “không tác dụng”
elevated chủ yếu là “thoát sandbox để chạy trên host” khi session đang sandboxed. Nếu sandboxing đang off thì elevated gần như không thay đổi gì.
Để chốt đúng nguyên nhân, bạn paste giúp 2 thứ này (trên VPS):
openclaw --version
openclaw gateway status
Và copy nguyên văn thông báo lỗi mà Telegram bot trả về (1–2 dòng) — thường nó sẽ nói rõ “blocked by sandbox/tool policy” hay “approval/allowlist denied”.
Mình chưa thấy nội dung file trong message vừa rồi (có vẻ Discord không paste kèm), nên chưa review được.
Quan trọng: đừng dán cả file openclaw.json nếu có botToken / API keys. Chỉ cần dán mấy đoạn sau (đã che token) là đủ để bắt bệnh “exec không có quyền”:
- Output:
openclaw gateway status
Nhìn 2 dòng Config (cli) và Config (service) xem bạn có đang sửa đúng file mà service đang chạy không (rất hay bị sửa nhầm file → sửa rồi vẫn lỗi).
- Trong file config, paste (redact) các block này:
tools(đặc biệt có/không cótools.exec.host,tools.allow,tools.deny)tools.sandbox.tools(nếu có)agents.defaults.sandbox(mode gì: off/non-main/all)agents.list[].tools(nếu bạn có override theo agent)
- Và paste nguyên văn 1–2 dòng lỗi bot Telegram trả về khi bạn yêu cầu chạy lệnh (vd: “blocked by sandbox tool policy”, “approval denied”, “host=sandbox but sandboxing is off”, …). Chỉ cần đúng câu lỗi đó là mình chốt được.
Nếu bạn muốn thử fix nhanh (phổ biến nhất trên VPS): thêm hẳn phần này vào config đúng file service đang dùng, rồi openclaw gateway restart:
{
tools: {
profile: "coding",
exec: { host: "gateway" }
}
}
Gửi mình 2 thứ: openclaw gateway status + câu lỗi exact là ra ngay.
có vẻ phương án A đã hoạt động
Nice — nếu phương án A (set tools.exec.host: "gateway") chạy được rồi thì đúng bệnh: trước đó exec đang trỏ vào sandbox trong khi bạn không bật sandbox nên nó fail.
Gợi ý nhanh để chạy ổn + an toàn hơn trên VPS:
- Giữ Telegram DM allowlist (chỉ ID của bạn) để tránh người lạ ra lệnh.
- Nếu bạn muốn chặt hơn nữa: để
tools.exec.security: "allowlist"+ask: "on-miss"và cấu hình~/.openclaw/exec-approvals.json(để không vô tình chạy lệnh nguy hiểm).
Nếu cái này đã fix xong, bạn có thể Mark Solution giúp thread để Answer Overflow index lại: chuột phải vào message giải pháp → Apps → “Mark Solution”.