这个工具能完全控制你的手机。部署前请了解下面这些风险,以及默认采取的措施。
| 风险 | 说明 | 默认措施 |
|---|---|---|
| WebDriverAgent 没有认证 | 能访问 WDA 端口的人就能操作手机 | 端口转发只监听 127.0.0.1(不用 go-ios 的 ios forward,它监听所有网卡);MCP 走 docker exec 的 stdio,不开网络端口 |
| 实时画面没有认证 | 能访问 MJPEG 端口的人就能看到手机屏幕,包括正在输入的内容 | 端口转发只监听 127.0.0.1;不需要时在 .env 里设 MJPEG_PORT=0 关闭 |
| WebView 调试(CDP)没有认证 | 本机任何进程都能读取和操作 Safari 标签页和可检查的 WebView,包括已登录的网站;桥接不检查请求来源 | 默认关闭(CDP_PORT=0),要显式开启;只监听 127.0.0.1 |
| 容器以 privileged 运行 | 为了直接访问 USB 设备 | 隧道用用户态网络栈,不建内核网卡、不改宿主机网络;容器只挂 USB 设备和数据目录 |
| 数据目录里有敏感材料 | 配对记录、Apple ID 登录状态、开发私钥、锁屏密码 | 敏感子目录权限 700;.gitignore 排除 data/ 和 .env;CI 跑 gitleaks |
| 自动解锁 | 能登录宿主机、或能调用这个 MCP 的人,都能解锁手机 | 默认关闭,要显式 iphonectl passcode set;密码不进日志,也不会出现在返回给 AI 的内容里 |
| 自动解锁输错 | iOS 连续输错会越锁越久,开了「抹掉数据」10 次会清空手机 | 每按一位都核对,不完整的输入不提交;整串输错一次就永久停用,直到人工恢复 |
| Apple ID | plumesign 登录需要密码和双重认证 | 只在你自己的终端里输入;建议用专门注册的免费 Apple ID,不用主账号 |
| 第三方 anisette 服务 | plumesign 登录时请求 mac-ani.jkcoxson.com 生成设备标识 |
文档告知;它拿不到密码 |
| AI 误操作 | AI 可能点到付款、删除、发消息 | MCP 说明里要求这类操作先征求用户同意;Claude Code 默认每次调用工具都要确认 |
- 只在你信任、只有你能登录的机器上部署。
- 备份
data/,但备份也要按敏感数据对待。 - 要从其他机器看实时画面或调试 WebView,用 SSH 端口转发,不要把端口绑到其他网卡。
- WebView 调试用完就把
CDP_PORT改回0并iphonectl up。 - 不用时可以
iphonectl down,或在手机上关闭开发者模式。 - 停用自动解锁:
iphonectl passcode clear,再把手机的「自动锁定」改回「永不」。 - 换手机或不再使用时:在 Apple ID 的开发者设备列表里删掉这台手机,删掉
data/。
请通过 GitHub 的 Security Advisories 私下报告,不要公开提 issue。