Repository navigation
Command Proposals en
obsidianplus edited this page Oct 14, 2026
·
1 revision
A
/commandappearing in any natural-language reply is never executed.
When a player explicitly asks Panda to do something that needs a command ("take me to spawn"), the agent can only propose it through the propose_command tool. When the turn ends, the command is shown with confirm / cancel buttons:
[Panda] I can run /spawn to take you back to spawn.
[✔ Confirm] [✖ Cancel]
flowchart LR
A["Player: take me to spawn"] --> B["Agent calls propose_command('spawn')"]
B --> C{"Checks<br/>switches · allow list · block list · permissions"}
C -->|fail| X["Refused, with a reason"]
C -->|pass| D["One-time buttons shown"]
D -->|Confirm clicked| E["Runs as the player"]
D -->|Player replies "do it"| F["Agent calls respond_to_pending_action"]
F --> E
D -->|expired / cancelled| Y["Discarded"]
panda.command_awareness.enabled: true-
panda.command_awareness.allow_execution: true(off by default) - The command root is in
allowed_commandsand not inblocked_commands - The player has
pandagpt.useandpandagpt.actions - The player clicks Confirm in time, or clearly tells the agent "do it"
panda:
command_awareness:
enabled: true
allow_execution: true
executor: 'player' # player only; never elevated
max_executions: 3 # commands per batch
confirmation_ttl_seconds: 60
allowed_commands: [help, spawn, home, warp, tpa, balance]
blocked_commands: [op, deop, stop, restart, reload, execute, sudo, panda, pandaadmin]| Guarantee | Detail |
|---|---|
| 👤 Runs as the player | Never as OP or the console |
| 🔁 Permissions checked twice | At proposal and at confirmation; the server dispatches with the player's current permissions |
| 🎟️ One-time confirmation | Buttons are single-use server-side click callbacks bound to the player's UUID, with expiry and no replay |
| 🧱 Syntax limits | Namespaced commands (minecraft:xxx), newlines and chaining are rejected |
| 🚫 Always blocked | op, deop, stop, reload, execute, sudo and other admin or wrapper commands |
| 🧮 Batch limits | At most max_executions per batch; any refusal, failure or permission change stops the batch |
| 🗣️ Explicit consent only | The agent may call respond_to_pending_action only when the player's next message clearly agrees, once per turn; otherwise it must ask |
- The allow list works on command roots. Review every sub-command and argument of an allowed command.
- Do not allow wrapper commands that can run other commands.
- Bukkit's dispatch result only means the command was accepted, not that the in-game action succeeded; rely on the command's own feedback.
- Want Panda to explain commands but never run them? Keep
allow_execution: false; the agent can still uselist_server_commandsto tell players what to type.
⬅️ 🔌 Plugin Integrations · 📚 Contents · ⚙️ Configuration ➡️
🐼 PandaGPT · 源码 Source · 中文首页 · English Home
🐼 PandaGPT
简体中文
- 🏠 首页
- 📦 安装与升级
- 🤖 模型服务商
- 💬 和 Panda 对话
- 🧠 Agent 与工具
- 📜 技能与提示词
- 🔔 主动式助手
- 👁️ 视觉与感知
- ✨ 创意功能
- 🔌 插件集成
- ⚡ 命令提案
- ⚙️ 配置参考
- 🌍 多语言
- 🔑 权限与管理命令
- 🚀 性能
- 🛡️ 安全与隐私
- ❓ 常见问题
- 🛠️ 开发指南
English
- 🏠 Home
- 📦 Installation
- 🤖 Model Providers
- 💬 Talking to Panda
- 🧠 Agent & Tools
- 📜 Skills & Prompts
- 🔔 Proactive Assistant
- 👁️ Vision & Perception
- ✨ Creative Features
- 🔌 Plugin Integrations
- ⚡ Command Proposals
- ⚙️ Configuration
- 🌍 Languages
- 🔑 Permissions & Admin
- 🚀 Performance
- 🛡️ Privacy & Security
- ❓ FAQ
- 🛠️ Development