零依赖、跨平台的 GUI 提权代理,让 AI Coding Agent 在后台安全执行特权命令。

解决什么问题

AI Agent 在非 root 终端中运行时,sudo 需要交互式 tty 输入密码——但 Agent 的 subprocess 环境里没有 tty。结果:命令失败、Agent 卡死或产生幻觉。

gsudo 在 Agent 和系统之间插入一个 GUI 确认层:Agent 调用 gsudo,用户通过图形窗口确认并输入密码,命令以 root 执行,输出返回 Agent。

核心设计

stdout/stderr 分离

stdout → 命令原始输出(Agent 可直接 parse)
stderr → gsudo 横幅 + 状态(给人看的)

Agent 调用 gsudo whoamicapture_output=True 拿到的 stdout 就是 root。不需要正则解析包装文本。

为什么自绘 Tkinter 而不是用 pkexec

gsudo (sudo -S + Tkinter)pkexec
命令预览✅ 完整展示命令和 AI 生成的原因❌ 不可定制
跨平台✅ Linux/macOS/Windows❌ Linux only
环境变量✅ 完整保留❌ 严格清理
依赖零(Python stdlib)需安装 PolicyKit

sudo -S 从 stdin 管道读密码,subprocess.run 直接传。不需要 root 权限运行 gsudo 本身。

跨平台自适应

LinuxmacOSWindows
提权机制sudo -Ssudo -SStart-Process -Verb RunAs
GUI 交互密码框密码框确认按钮
系统弹窗UAC(安全桌面,不可绕过)
密码❌(UAC 设计为意图确认,非身份验证)

Windows 上 PowerShell 命令通过 base64 编码传递,防止注入。

多实例并发

不加全局锁。几个 Agent 同时需要提权,就同时弹窗——用户自己决定先处理哪个。锁反而让后面的实例在终端里卡住不动。

不缓存密码

sudo 有自己的 timestamp,gsudo 不做额外缓存。提权操作每次都应该让用户确认。

技术栈

  • Python 3.6+
  • Tkinter (ttk) — 标准库,零安装
  • Linux/macOS: sudo -S stdin 密码管道
  • Windows: PowerShell + base64 编码 → UAC

快速开始

# 依赖(Linux only)
sudo apt install python3-tk

# 安装
curl -o ~/.local/bin/gsudo https://raw.githubusercontent.com/CNCSMonster/gsudo/main/scripts/gsudo
chmod +x ~/.local/bin/gsudo

# 作为 Agent Skill 注册
ln -sf /path/to/gsudo ~/.agents/skills/gsudo

验证状态

平台状态
Linux✅ 实机测试通过
macOS❌ 无设备
Windows❌ 无桌面环境

项目链接