
Gemini CLI 预览版 v0.58.0-preview.0 深度解读沙箱安全、路径解析与执行韧性更新一览【免费下载链接】gemini-cliAn open-source AI agent that brings the power of Gemini directly into your terminal.项目地址: https://gitcode.com/GitHub_Trending/gemi/gemini-cli作为把 Gemini 能力带进终端terminal的开源 AI AgentGemini CLI 采用 Nightly / Preview / Stable 三档发布通道其中预览preview版本承载最新、最实验性的功能适合希望提前试用并反馈意见的开发者。本文以 docs/changelogs/preview.md 为基准完整梳理v0.58.0-preview.0发布于 2026 年 8 月 25 日的核心亮点并结合仓库源码与测试文件逐项解析底层实现帮助你在安装使用、测试反馈和代码审阅时快速建立全局认知。说明预览版不像 最新每周稳定版 那样稳定本文涉及的均为该版本已合入merged的真实变更。Gemini CLI 的发布渠道与预览版定位在深入版本内容之前先明确这套发布体系。docs/changelogs/index.md 中给出了三档渠道的官方定位渠道说明适合人群Nightly每日构建包含最新代码想紧跟主干、能容忍高频变化的开发者Preview已准备好早期反馈的实验性功能愿意尝鲜、可参与反馈的开发者Stable稳定、推荐日常使用绝大多数普通用户v0.58.0-preview.0属于 Preview 通道。它通常领先于 Stable 一个或多个版本周期因而会优先携带若干面向安全、稳定性与可靠性的修复。由于预览版本可能包含尚未经过大规模验证的改动官方明确建议生产与日常重度使用场景优先选择 Stable 版本。安装预览版切换 npm dist-tag预览版与稳定版共用同一个 npm 包名google/gemini-cli区别在于发布标签dist-tag。在仓库文档中给出的安装命令是npm install -g google/gemini-clipreview关键点不加任何tag时npm 默认安装latest标签对应的稳定版见 docs/changelogs/latest.md 中的npm install -g google/gemini-cli加上preview后缀后npm 会拉取当前 Preview 标签指向的构建即本篇文章所述的 v0.58.0-preview.0若同时维护多个项目或希望避免全局污染也可使用npx临时执行预览版仓库整体基于 npm workspace 管理入口与打包逻辑可参考 package.json 与 scripts/start.js。安装完成后可在交互会话内通过/settings等命令管理实验性开关将本次预览中的行为改进纳入工作流验证。亮点一macOS Seatbelt 沙箱安全增强核心变更在 macOS 的 Seatbelt 沙箱配置中隔离 Docker 与容器运行时container runtime的 socket 和二进制文件进一步提升沙箱安全性PR #28935。背景Gemini CLI 为了在终端中安全执行 shell 命令与工具调用引入了多平台沙箱能力。在 macOS 上这套能力基于系统的 Seatbeltsandbox-exec配置文件实现将进程限制在默认拒绝、按需放行的权限模型之内。若沙箱内进程能够触达宿主机的 Docker socket 或容器运行时二进制则存在通过容器逃逸或滥用宿主机守护进程扩大攻击面的风险。源码佐证仓库中 macOS 沙箱的 Seatbelt 参数构建逻辑集中在 packages/core/src/sandbox/macos/seatbeltArgsBuilder.ts并配套了与之对应的 seatbeltArgsBuilder.test.ts。在该测试的container runtime isolation分组中可以看到本版本新增的断言覆盖expect(profile).toContain((literal /var/run/docker.sock)); expect(profile).toContain((literal /private/var/run/docker.sock)); expect(profile).toContain((regex #^/Users/[^/]/\\.docker/run/)); expect(profile).toContain((literal /usr/local/bin/docker)); expect(profile).toContain((literal /opt/homebrew/bin/docker)); expect(profile).toContain((xpc-service-name-prefix com.docker.)); expect(profile).toContain((ipc-posix-name-prefix docker));这些断言揭示了本次改动实际写入 Seatbelt 配置的隔离规则可归纳为几类Socket 文件/var/run/docker.sock、/private/var/run/docker.sock以及用户目录下~/.docker/run/前缀常见于 Docker Desktop 的 rootless/用户态运行方式的 socket 全部被显式拒绝二进制文件/usr/local/bin/docker与/opt/homebrew/bin/dockerIntel 与 Apple Silicon 两种 Homebrew 安装路径不可执行XPC 与 POSIX IPC以com.docker.开头的 XPC 服务与名为docker的 POSIX IPC 名称前缀均被拦截封堵经由进程间通信访问 Docker 守护进程的通道。从实现层面看macOS 沙箱的完整管理逻辑在 packages/core/src/sandbox/macos/MacOsSandboxManager.ts其测试见 MacOsSandboxManager.test.tsSeatbelt 模板则由 baseProfile.ts 提供。此前版本已经将 macOS Seatbelt profile 与默认拒绝deny-default模型对齐相关历史可见 docs/changelogs/index.md 中 v0.53.0 的说明本次改动是在该模型之上补齐 Docker/容器运行时出入口的具体覆盖。实操价值当你在受信但含容器化工具链的 macOS 工程目录中使用 Gemini CLI 执行涉及 Docker 的操作时沙箱会阻止 CLI 直接驱动宿主机 Docker从而缩小因提示注入或恶意指令造成的横向影响面。若确有在沙箱内使用容器运行时的需求需要在策略层面显式放行而非依赖默认规则。亮点二Core 服务忽略路径ignore path符号链接一致性修复核心变更确保 core 服务在忽略路径处理ignore path handling中对符号链接求值的一致性PR #28915。背景Gemini CLI 在扫描工作区、向模型注入上下文之前需要借助忽略规则类似.gitignore语义具体可参见 docs/cli/gemini-ignore.md过滤掉无关或敏感文件。当文件系统中存在符号链接symlink时是否解析链接指向、如何判断链接本身是否命中忽略模式会直接影响文件发现file discovery与上下文注入的结果不同调用路径若采用不一致的求值策略可能导致该忽略的没忽略或不该忽略的被误忽略。源码佐证与本次修复直接对应的是 packages/core/src/services/fileDiscoveryService.ts 及其专项测试 fileDiscoveryService.symlink.test.ts。从测试用例可以还原本次修复约定的几种语义场景 A未命中忽略模式的符号链接若其指向的目标文件命中忽略模式则该链接应被忽略shouldIgnoreFile(secret.txt)为true指向它的public_link.txt也应为true场景 B链接自身名称命中忽略模式的即便目标未忽略也应当被忽略ignored_link.txt为true场景 C断链broken link不应抛出异常应按未命中处理场景 DshouldIgnoreFile/shouldIgnoreDirectory支持显式传入isSymbolicLink选项跳过符号链接解析或强制按链接处理场景 E递归发现getIgnoredPaths时指向目录的链接必须按目录语义评估避免目录型链接被当作普通文件而漏出。对应实现中fileDiscoveryService.ts 的_shouldIgnore逻辑通过options.isSymbolicLink ?? stat?.isSymbolicLink()决策是否做链接解析并在递归遍历时把entry.isSymbolicLink()作为元数据传入这正是一致符号链接求值的代码落脚点。仓库内该服务的常规行为测试见 fileDiscoveryService.test.ts。实操价值对使用 monorepo、通过符号链接组织包目录或存在指向外部敏感目录的链接型工程此修复能显著降低上下文意外包含被忽略内容的概率让 上下文管理 前的工作区扫描结果更可预期。亮点三会话历史回滚与重试提示优化核心变更增强历史回滚history rollback并优化重试提示retry nudges使会话管理更加顺畅PR #28934。背景在 Agent 会话中模型输出触发工具调用、工具返回结果后又可能因失败进入重试或者用户对消息做编辑/回滚。此时会话历史agent chat history与调度执行状态必须保持一致否则会出现重试提示指向已回滚的消息工具响应与历史顺序错位等问题。源码佐证会话历史与执行状态的相关逻辑集中在 packages/core/src/core/agentChatHistory.ts测试见 agentChatHistory.test.ts与 packages/core/src/core/geminiChat.ts测试见 geminiChat.test.ts。而 shell 工具执行侧的重试提示行为与shellExecutionService耦合该服务此前在本版本还被同批清理了eslint-disable与类型断言见 shellExecutionService.ts 及 shellExecutionService.test.ts。可以推断本次优化围绕回滚后状态干净、重试前提示不残留展开属于典型的会话一致性打磨。实操价值当你在交互会话中使用方向键编辑上一条消息、或触发一次失败的 shell 命令后重试优化后的逻辑能避免历史中夹带陈旧的失败提示或回滚后重试定位到错误轮次是日常高频操作下的体感改善。亮点四A2A Server 韧性——新消息轮次清除陈旧取消错误核心变更当新消息轮次到来时清除先前遗留的取消错误stale cancellation error避免错误的错误状态PR #28940。背景A2AAgent-to-AgentServer 以任务task形式承载跨 Agent 的消息与工具执行。当上一次执行循环被用户取消abort后内部会记录一个取消错误用于终止后续步骤但若该状态未被清除即便用户随后开启了全新的一轮对话旧错误仍可能被误认为当前轮次的失败原因导致任务状态显示异常或流提前终止。源码佐证v0.58.0-preview.0之前的版本已经强化过 A2A 的任务隔离与取消安全相关进展可见 docs/changelogs/index.md 中 v0.54.0/v0.55.1 对 A2A 的描述。本次改动直接体现在 packages/a2a-server/src/agent/task.ts 的acceptUserMessage入口处// Clear any stale cancellation error from a previous aborted execution loop this.cancellationError undefined;即在接受新用户消息时第一时间重置取消状态随后才进入本轮消息的 LLM parts 组装与sendMessageStream流程。对应测试位于 packages/a2a-server/src/agent/task.test.ts其中明确覆盖了在acceptUserMessage上清除先前执行循环遗留的取消错误这一行为。实操价值对把 Gemini CLI 作为远程 Agent 后端、通过 A2A 协议编排任务的用户而言本次修复让一次取消之后再发新消息的场景不再被历史取消状态污染属于分布式 Agent 会话可靠性提升的关键一环。A2A 的整体能力说明可进一步参考 packages/a2a-server/README.md 与 docs/core/remote-agents.md。亮点五写入策略声明顶层安全检查器核心变更在写入策略write policy配置中声明顶层安全检查器top-level safety checkers强化执行护栏PR #28961。背景Gemini CLI 的策略引擎Policy Engine统一裁决工具调用与 hook 执行是否放行ALLOW、拒绝DENY或询问用户ASK_USER详见 docs/reference/policy-engine.md。对于write_file这类写工具仅有问一下用户还不够——一旦用户批量确认真正危险的内容可能趁虚而入。为此策略引擎引入了进程内安全检查器in-process safety checker当规则决策为 ASK_USER 时附带的安全检查器会对即将执行的内容做进一步拦截失败即降级为 DENY。源码佐证规则与配置类型中作用于工具调用的安全检查器列表与作用于 hook 执行的安全检查器列表分别定义于 packages/core/src/policy/types.ts含SafetyCheckerRule从 TOML 配置解析出检查器类型与参数正则的逻辑位于 packages/core/src/policy/toml-loader.ts进程内检查器的统一接口与内置实现在 packages/core/src/safety/built-in.ts上下文构建在 packages/core/src/safety/context-builder.ts策略引擎的裁决路径在 packages/core/src/policy/config.ts 与 policy-engine.test.ts。后者可以印证行为契约当决策为 ASK_USER 时运行安全检查器失败则降级为 DENY成功则维持 ASK_USER在 packages/core/src/policy/config.test.ts 中可以看到针对write_file工具的规则解析样例其中写工具默认落入 ASK_USER 决策规则可携带type: in-process的检查器并支持toolName精确匹配。本版本将原先散落在策略子模块内的安全检查器声明统一提升为写入策略的顶层声明top-level意味着写入类工具的护栏不再依赖各条规则的重复配置而是以更稳定、更易审计的形态集中生效。这与仓库对 docs/admin/enterprise-controls.md 中企业级执行管控的定位一致。实操价值企业或安全敏感场景下策略管理员可以在写入策略中声明检查器让应当询问用户的写操作在自动放行前再经一层进程内安全校验对 Agent 行为最关心的写路径文件写入、内容替换而言这构成了比单纯权限询问更靠内的执行护栏。本版本变更清单总览除上述五大亮点外v0.58.0-preview.0还包含若干工程与代码质量类改动逐条整理如下变更作者类型说明Changelog for v0.57.0-preview.0gemini-cli-robot文档上一版预览的变更记录PR #28918符号链接一致求值ignore pathluisfelipe-altfix(core)本文章节二所述PR #28915清理shellExecutionService的 eslint-disable 与类型断言DavidAPiercerefactor(core)代码质量重构PR #28862macOS Seatbelt 隔离 Docker/容器运行时josebaliusfix(sandbox)本文章节一所述PR #28935A2A 新消息轮次清除陈旧取消错误amelidevfix(a2a-server)本文章节四所述PR #28940写入策略顶层声明安全检查器luisfelipe-altfix(core)本文章节五所述PR #28961历史回滚与重试提示优化DavidAPiercefix本文章节三所述PR #28934版本之间的完整差异diff范围可从v0.57.0-preview.1到v0.58.0-preview.0的 Full Changelog 对比获得preview.md 中已内嵌该比较链接。版本号与发布节奏观察结合 docs/changelogs/preview.md 与 docs/changelogs/index.md 的记录可以观察到两个事实Preview 与 Stable 并不总是同号并行如 v0.57.x 仅有 preview.0/preview.1而 Stable 一侧在 v0.54.0、v0.55.1 等点位另有编号与 cherry-pick 修补patch 通道的机制可参考 docs/releases.md变更经常以fix(core)、fix(sandbox)、fix(a2a-server)等前缀标识模块归属便于在 docs/changelogs/index.md 中按主题回溯某条能力如沙箱、A2A、策略引擎的演进脉络。因此如果你希望尝鲜可以安装 preview 标签并注意其与 stable 的行为差异如果更看重开箱即用的稳定体验则等待对应功能合入 最新稳定版说明 后再升级。总结与验证建议v0.58.0-preview.0是一次以安全边界收窄 会话/任务状态一致性 代码质量治理为主的预览迭代macOS 沙箱封堵 Docker 出入口、忽略路径统一符号链接语义、A2A 任务状态去残留、写入策略强化护栏共同提升了 Gemini CLI 在隔离执行与多 Agent 编排场景下的可信度。想要在自己的环境中验证以上行为可以按如下路径进行安装预览版npm install -g google/gemini-clipreview随后运行gemini确认版本号为 v0.58.0-preview.0沙箱规则验证在 macOS 上构造含 Docker socket 的目录并观察沙箱内行为源码断言可对照 packages/core/src/sandbox/macos/seatbeltArgsBuilder.test.ts符号链接语义验证建立指向被忽略文件的链接观察上下文注入是否过滤可参考 packages/core/src/services/fileDiscoveryService.symlink.test.ts 的场景矩阵会话一致性验证多次执行发送失败 shell 命令 → 编辑重发并配合/rewind见 docs/cli/rewind.md回滚观察历史显示是否干净A2A 编排验证取消一次远程任务后立即发起新对话确认任务状态不残留旧取消错误逻辑参照 packages/a2a-server/src/agent/task.ts写入策略验证查看默认写入策略及安全检查器声明测试配置可对照 packages/core/src/policy/config.test.ts策略书写规范参考 docs/reference/policy-engine.md。版本事实核对本文所有功能亮点、PR 编号、作者与模块归属均以 docs/changelogs/preview.md 原文为准实现层面的描述基于仓库当前源码与测试确认若后续版本演进请以对应版本的 changelog 为最终依据。【免费下载链接】gemini-cliAn open-source AI agent that brings the power of Gemini directly into your terminal.项目地址: https://gitcode.com/GitHub_Trending/gemi/gemini-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考