kiro-discord-bot

安全模型 #

kiro-discord-bot 是 Discord、Kiro CLI、本機專案檔案與 MCP servers 之間的橋接。安全性取決於每一層是否被明確配置。

信任邊界 #

邊界控制
Discord accessBot token、guild/channel permissions、privileged intents、slash command permissions。
Channel workspace/cwd、DEFAULT_CWD、ALLOWED_CWD_ROOTS、channel metadata。
Agent toolsKiro CLI authentication、ACP tool permission decisions、TRUST_ALL_TOOLS、TRUST_TOOLS。
MCP tools/mcp manage、channel policy DB、外部 MCP server environment guards、per-tool allowlists。
Audit dataAUDIT_LOG_* settings、SQLite file permissions、retention policy。
Generated egressDiscord send permissions、bot-tools safe egress queues、MCP server write restrictions。
WebShare relaySelf-host relay host token、URL-fragment link secrets、E2E encrypted frames、opener permission rechecks、明確 via WebShare display。

最小權限預設 #

每個 channel 應獨立初始化,只啟用該 channel 真的需要的 MCP tools。內建 bot-tools server 只有小範圍安全預設 allowlist;bot_query_audit 這類敏感工具與 bot_delete_cron 這類 destructive tools 不在預設集合內。

外部 MCP servers 可能有自己的 policy。mcp-discord 是純 Discord REST:/mcp manage 控制暴露 tools,Discord token 權限控制 guild/channel 可達範圍,server 保留檔案路徑與 mention rendering guards。

WebShare 委派 #

WebShare control links 是單一 channel 或 thread target 的 delegated capabilities。Relay 是 content-blind 且必須 self-host;它只轉送 encrypted frames,不應接收 Discord user tokens、raw local paths、command secrets 或 plaintext prompts。Bot access 維持 outbound-only,透過 relay host WebSocket 連線。

每個 WebShare write action 都以 opener 身分授權,並在執行前重新檢查 Discord access。Share active 期間,opener 在該 target 的 direct Discord prompt 與 bot-command paths 會被 lockout;必須使用 browser link 或 /webshare stop。Browser-originated Discord messages 必須明確標示 via WebShare,v1 mentions 只限明確選取 users 與 bot。Role mentions、parse-all mentions、@everyone 與 @here 均停用。

Secrets #

Tokens 與 provider keys 應放在 service environment,不要放進 repository files。/doctor 會遮蔽已知敏感值,但 logs、shell history、process manager 與 crash report 仍應視為敏感面。

WebShare relay host tokens 與完整 control/view links 都是 secrets。Production 優先使用 WEBSHARE_HOST_TOKEN_FILE 與 RELAY_HOST_TOKEN_FILE。完整 WebShare URLs 包含 fragment secrets;fragment 不會送到 relay,但 URL 仍可能留在 browser history、screenshots、chat 與 support logs 中。

公開與私密 Discord 回覆 #

Admin panels 與敏感 slash responses 會在 Discord 支援時使用 private interaction responses。Text commands 無法保證私密性,所以 audit rows、audit prompt reports、usage reports/history 僅支援 slash command。

Agent final answers 預設是一般 Discord responses,除非該 command path 明確使用 private response。不要把 secrets 放進 prompts 或 channel messages。

Audit 與隱私 #

Audit 預設啟用,而且可以記錄 message content。若部署環境有更嚴格隱私要求,請設定 AUDIT_LOG_RECORD_CONTENT=false 與 AUDIT_LOG_RETENTION_DAYS。

/audit <prompt> 會使用私密短生命週期 agent,只授權 audit query tool,停用 Discord egress tools,並把 usage 記在觸發的 Discord 使用者身上。

網路與主機環境 #

macOS launchd 的 proxy 與 NO_PROXY 設定可能不同於互動 terminal。如果 MCP servers 位於 private 192.168.0.0/16 網路,應先正確設定 host process environment,再考慮 relay。詳見 macOS MCP 網路。