#Bot không có exec tool

1 messages · Page 1 of 1 (latest)

jade patrol
#

Tôi đã yêu cầu bot telegram của mình chạy lệnh trên máy vps aws nhưng nó báo rằng nó không có quyền, làm sao để khắc phục điều này

fringe furnaceBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

proud prairieBOT
#

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:

#

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.

jade patrol
#

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

proud prairieBOT
#

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:

  1. Exec đang chạy vào host=sandbox (mặc định) trong khi bạn chưa bật sandbox (Docker)
  2. 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"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”:

  1. Output:
openclaw gateway status

Nhìn 2 dòng Config (cli)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).

  1. 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)
  1. 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.

jade patrol
#

có vẻ phương án A đã hoạt động

proud prairieBOT
#

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”.