Skip to content
wuuJiaweiPublic

About

Security-first macOS tool to inspect and safely manage login items, launchd jobs, background tasks, and cron.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

中文 | English

Stoat Logo

Stoat

看清并管理每一个在 Mac 上自动运行的项目。

Release CI Go License macOS 13+

Stoat 是一个安全优先的 macOS 持久化检查与管理工具。它把登录项、launchd、后台任务和定时任务放进统一视图,解释项目从哪里来、当前是否运行、为什么值得关注,并在安全边界内提供停用、启用、隔离、移除与恢复能力。

Stoat 提供复核线索,不是恶意软件检测器,也不会把“高风险”直接判定为“病毒”。

Stoat 终端界面

功能

  • 统一发现:扫描 Login Items、Background Task Management、LaunchAgents、LaunchDaemons 和 cron。
  • 清晰归属:结合 .app 路径、Info.plist、签名、文件属性和 launchctl 状态解释来源。
  • 交互管理:按“分类 → 列表 → 详情 → 操作”浏览,支持停用、启用、隔离、移除启动项和卸载已确认归属的应用。
  • 终端品牌页:启动时展示 Stoat Logo、项目地址、当前版本,并异步提示可用的新版本。
  • 持续观察:保存快照、比较配置变化、记录历史事件,并结合 Unified Log 生成诊断信息。
  • 安全操作:强确认、私有备份、操作后验证、审计、失败回滚;应用只移动到废纸篓。
  • 自动化友好:提供表格、JSON、CSV 和 JSON 事件流,支持 Intel 与 Apple Silicon。

快速开始

安装

curl -fsSL https://raw.githubusercontent.com/wuuJiawei/stoat/main/scripts/install.sh | sh

安装器会识别 arm64 / amd64,校验 SHA-256,并原子安装到 ~/.local/bin/stoat。如果该目录不在 PATH:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

运行

stoat

进入交互界面后:

  • 使用方向键或 1–5 选择分类。
  • 按 Enter 进入列表或查看详情,按 a 打开操作菜单。
  • 按 Esc 逐级返回;删除和卸载需要输入指定确认词。

再次运行安装脚本即可升级,无需先卸载。

Stoat 仅提供上述 raw.githubusercontent.com 安装入口。

常用命令

# 查看
stoat startup                    # 登录与开机启动项
stoat scheduled                  # 定时任务
stoat background                 # 后台项目
stoat suspicious                 # 需要优先复核的项目
stoat inspect <id-or-label>      # 查看完整详情

# 管理:首次执行输出计划和一次性确认令牌
stoat disable <id-or-label>
stoat disable <id-or-label> --confirm <token>
stoat enable <id-or-label>
stoat quarantine <id-or-label>
stoat remove <id-or-label>       # 移除启动配置,保留可恢复备份
stoat uninstall <id-or-label>    # 将已归属应用移动到废纸篓
stoat restore <operation-id>

# 观察与导出
stoat scan --json
stoat snapshot --output before.json
stoat diff --json before.json after.json
stoat watch --interval 30s
stoat changes --limit 50
stoat diagnose <id-or-label> --last 1h
stoat export --format csv --output stoat-report.csv

运行 stoat --help 查看完整参数。

安全设计

Stoat 会读取多种 macOS 持久化来源,但不会对所有来源开放修改:

  • 扫描默认只读;状态修改仅支持非 Apple 的 launchd 项。
  • 不修改 BTM 私有数据库,不重写 crontab,不操作 /System/Library 项。
  • 不调用 sudo,不通过 Shell 执行系统命令;系统级操作要求进程本身已是 root。
  • 每次操作都绑定项目 ID、配置摘要和当前运行状态;配置变化后旧令牌自动失效。
  • 修改前创建受保护备份,随后验证结果、写入审计;失败时恢复原配置与运行状态。
  • 卸载只处理证据明确、位于 /Applications 或 ~/Applications 的顶层 .app,不猜测或删除缓存、配置、账号及其他用户数据。
  • 外部命令、文件大小、输出和整体扫描都有边界与超时;单一来源失败会产生 warning,不会隐藏其他结果。

安全模型与恢复流程见 SECURITY.md 和 docs/SAFE_ACTIONS.md。

兼容性与数据

  • 目标系统:macOS 13+;CI 在 macOS 14 / 15 验证。
  • 架构:Apple Silicon (arm64) 与 Intel (amd64)。
  • 私有状态:~/Library/Application Support/Stoat。
  • 快照 diff 关注持久化配置、签名、归属和禁用状态,不把 PID 或短暂运行状态变化视为配置变化。
  • sfltool dumpbtm 与 launchctl 的部分诊断输出不是稳定公共格式,解析器只读取已知字段并保留未知字段兼容性。

文档

致谢

特别感谢 tw93/Mole。Stoat 在终端优先的产品表达、TUI 交互、安全默认值和开源维护方式上受到 Mole 启发。

Mole 专注于 macOS 清理、卸载与系统维护;Stoat 专注于持久化项目的发现、解释和受控管理。两者解决的问题不同,Stoat 的代码、领域模型与安全操作协议均为独立实现。

也感谢 Bubble Tea 及所有参与反馈、测试和贡献的开发者。

License

MIT © Stoat contributors

About

Security-first macOS tool to inspect and safely manage login items, launchd jobs, background tasks, and cron.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages