4 4
5# 配置服务器管理的设置5# 配置服务器管理的设置
6 6
7> 通过 Claude.ai 上基于网络的界面为您的组织集中配置 Claude Code,无需设备管理基础设施。7> 通过服务器交付的设置为您的组织集中配置 Claude Code,无需设备管理基础设施。
8 8
9服务器管理的设置允许组织所有者通过 claude.ai 控制台中的 [**Admin Settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code) 集中配置 Claude Code。Claude Code 客户端在用户使用组织 OAuth 登录或直接配置的 API 密钥进行身份验证时自动获取这些设置,在支持服务器管理交付的平台上。请参阅[平台可用性](#platform-availability)。9服务器管理的设置允许组织所有者通过 claude.ai 控制台中的 [**Admin Settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code) 集中配置 Claude Code。Claude Code 客户端在用户使用符合条件的凭证在支持服务器管理交付的平台上进行身份验证时自动获取这些设置。请参阅[平台可用性](#platform-availability)了解符合条件的凭证和平台。
10
11这种方法专为没有设备管理基础设施的组织或需要为非托管设备上的用户管理设置的组织而设计。
12 10
13<Note>11<Note>
14 服务器管理的设置可供 [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) 和 [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise) 客户使用。12 服务器管理的设置可供 [Claude for Teams](https://claude.com/pricing?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_teams#team-&-enterprise) 和 [Claude for Enterprise](https://anthropic.com/contact-sales?utm_source=claude_code\&utm_medium=docs\&utm_content=server_settings_enterprise) 客户使用。
28 在服务器管理和端点管理的设置之间选择26 在服务器管理和端点管理的设置之间选择
29</h2>27</h2>
30 28
31Claude Code 支持两种集中配置方法。服务器管理的设置从 Anthropic 的服务器传递配置。[端点管理的设置](/zh-CN/settings#settings-files)通过本机操作系统策略(macOS 托管首选项、Windows 注册表)或托管设置文件直接部署到设备。29Claude Code 支持两种集中配置方法。服务器管理的设置从 Anthropic 的服务器传递配置。[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)通过本机操作系统策略(macOS 托管首选项、Windows 注册表)或托管设置文件直接部署到设备。
32 30
33| 方法 | 最适合 | 安全模型 |31| 方法 | 最适合 | 安全模型 |
34| :-------------------------------------------- | :-------------------- | :------------------------------- |32| :--------------------------------------------------------- | :-------------------- | :-------------------------------------------------- |
35| **服务器管理的设置** | 没有 MDM 的组织,或非托管设备上的用户 | 在身份验证时从 Anthropic 的服务器传递的设置 |33| **服务器管理的设置** | 没有 MDM 的组织,或非托管设备上的用户 | Claude Code 在启动时从 Anthropic 的服务器获取的设置,并在会话期间每小时刷新一次 |
36| **[端点管理的设置](/zh-CN/settings#settings-files)** | 具有 MDM 或端点管理的组织 | 通过 MDM 配置文件、注册表策略或托管设置文件部署到设备的设置 |34| **[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)** | 具有 MDM 或端点管理的组织 | 通过 MDM 配置文件、注册表策略或托管设置文件部署到设备的设置 |
37 35
38如果您的设备已在 MDM 或端点管理解决方案中注册,端点管理的设置提供更强的安全保证,因为设置文件可以在操作系统级别受到保护,防止用户修改。端点管理的设置不会到达[云会话](/zh-CN/model-config#surface-coverage),因此在网络上使用 Claude Code 的组织也应该配置服务器管理的设置。36如果您的设备已在 MDM 或端点管理解决方案中注册,端点管理的设置提供更强的安全保证,因为设置文件可以在操作系统级别受到保护,防止用户修改。端点管理的设置不会到达 Anthropic 托管环境中的[云会话](/docs/zh-CN/model-config#surface-coverage),因此在网络上使用 Claude Code 的组织也应该配置服务器管理的设置。[自托管环境](/docs/zh-CN/self-hosted-environments)中的会话也会读取运行器镜像中的托管设置文件。下面的[设置优先级](#settings-precedence)说明了该文件何时适用。
39 37
40<h2 id="configure-server-managed-settings">38<h2 id="configure-server-managed-settings">
41 配置服务器管理的设置39 配置服务器管理的设置
49 </Step>47 </Step>
50 48
51 <Step title="定义您的设置">49 <Step title="定义您的设置">
52 将您的配置添加为 JSON。支持 [`settings.json` 中可用的所有设置](/zh-CN/settings#available-settings),除了限制于操作系统级别策略传递的设置外;有关该简短列表,请参阅[当前限制](#current-limitations)。这包括 [hooks](/zh-CN/hooks)、[环境变量](/zh-CN/env-vars) 和[仅限托管的设置](/zh-CN/permissions#managed-only-settings),如 `allowManagedPermissionRulesOnly`。50 将您的配置添加为 JSON。支持 [`settings.json` 中可用的所有设置](/docs/zh-CN/settings-reference#all-settings),除了限制于操作系统级别策略传递的设置外;有关该简短列表,请参阅[当前限制](#current-limitations)。这包括 [hooks](/docs/zh-CN/hooks)、[环境变量](/docs/zh-CN/env-vars) 和[仅限托管的设置](/docs/zh-CN/managed-settings#managed-only-settings),如 `allowManagedPermissionRulesOnly`。
53 51
54 此示例强制执行权限拒绝列表,防止用户绕过权限,并将权限规则限制为在托管设置中定义的规则:52 此示例强制执行权限拒绝列表,防止用户绕过权限,并将权限规则限制为在托管设置中定义的规则。`Bash(curl *)` 规则匹配 `curl` [如 Claude 编写的那样](/docs/zh-CN/permissions#bash-rule-limits),而不是 `/usr/bin/curl` 或 `sh -c 'curl …'`;对于不依赖于命令文本的网络强制,添加一个[带有 `allowManagedDomainsOnly` 的 `sandbox` 块](/docs/zh-CN/sandboxing#configure-the-sandbox-for-your-organization)。
55 53
56 ```json theme={null}54 ```json theme={null}
57 {55 {
87 }85 }
88 ```86 ```
89 87
90 要配置 [auto mode](/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 分类器,使其了解您的组织信任的存储库、存储桶和域:88 由于 hooks 执行 shell 命令,交互式会话中的用户在 Claude Code 应用它们之前会看到[安全批准对话框](#security-approval-dialogs)。
91 89
92 ```json theme={null}90 要配置 [auto mode](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 分类器,使其了解您的组织信任的存储库、存储桶和域,以相同的方式传递 `autoMode` 块;有关 `autoMode` 条目如何影响分类器阻止的内容以及关于 `environment`、`allow`、`soft_deny` 和 `hard_deny` 字段的重要警告,请参阅[配置 auto mode](/docs/zh-CN/auto-mode-config)。
93 {
94 "autoMode": {
95 "environment": [
96 "Source control: github.example.com/acme-corp and all repos under it",
97 "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets",
98 "Trusted internal domains: *.corp.example.com"
99 ]
100 }
101 }
102 ```
103
104 由于 hooks 执行 shell 命令,用户在应用前会看到[安全批准对话框](#security-approval-dialogs)。有关 `autoMode` 条目如何影响分类器阻止的内容以及关于 `environment`、`allow`、`soft_deny` 和 `hard_deny` 字段的重要警告,请参阅[配置 auto mode](/zh-CN/auto-mode-config)。
105 </Step>91 </Step>
106 92
107 <Step title="保存并部署">93 <Step title="保存并部署">
113 验证设置传递99 验证设置传递
114</h3>100</h3>
115 101
116要确认设置正在被应用,请要求用户重新启动 Claude Code。如果配置包含触发[安全批准对话框](#security-approval-dialogs)的设置,用户会在启动时看到描述托管设置的提示。您还可以通过让用户运行 `/permissions` 来验证托管权限规则是否处于活动状态,以查看其有效的权限规则。102要确认设置正在被应用,请要求用户重新启动 Claude Code。如果配置包含触发[安全批准对话框](#security-approval-dialogs)的设置,用户会在 Claude Code 下次获取它们时看到描述托管设置的提示:在下次启动时,或在运行的交互式会话中的一小时内。您还可以通过让用户运行 `/permissions` 来验证托管权限规则是否处于活动状态,以查看其有效的权限规则。
103
104要检查特定机器上的获取结果,请让用户运行 `claude doctor` 并读取 `Managed settings (remote)` 行。需要 Claude Code v2.1.248 或更高版本。该行报告以下四种结果之一:
105
106* 传递的设置已加载
107* 您的组织没有配置服务器管理的设置
108* 获取失败,包括原因以及缓存的策略是否仍然适用
109* Claude Code 跳过了获取,包括原因。有关跳过它的提供商和配置,请参阅[平台可用性](#platform-availability)
110
111在获取仍在进行中时,该行会报告这一点。
112
113在运行的会话中,`/status` 在获取失败后显示相同的行,对于某些跳过获取的原因,例如第三方提供商变量或用户 shell 中导出的自定义 `ANTHROPIC_BASE_URL`。
117 114
118<h3 id="access-control">115<h3 id="access-control">
119 访问控制116 访问控制
121 118
122以下角色可以管理服务器管理的设置:119以下角色可以管理服务器管理的设置:
123 120
124* **主要所有者**121* **Primary Owner**
125* **所有者**122* **Owner**
126 123
127限制对受信任人员的访问,因为设置更改适用于组织中的所有用户。124限制对受信任人员的访问,因为设置更改适用于组织中的所有用户。
128 125
130 仅限托管的设置127 仅限托管的设置
131</h3>128</h3>
132 129
133大多数[设置键](/zh-CN/settings#available-settings)可在任何范围内工作。少数几个键仅从托管设置中读取,当放置在用户或项目设置文件中时无效。有关完整列表,请参阅[仅限托管的设置](/zh-CN/permissions#managed-only-settings)。任何不在该列表上的设置仍然可以放置在托管设置中,并具有最高优先级。130大多数[设置键](/docs/zh-CN/settings-reference#all-settings)可在任何范围内工作。少数几个键仅从托管设置中读取,当放置在用户或项目设置文件中时无效。有关权限和插件控制,请参阅[仅限托管的设置](/docs/zh-CN/managed-settings#managed-only-settings),或读取[所有设置](/docs/zh-CN/settings-reference#all-settings)索引的 Scope 列以获取完整集合。
134 131
135<h3 id="current-limitations">132<h3 id="current-limitations">
136 当前限制133 当前限制
139服务器管理的设置有以下限制:136服务器管理的设置有以下限制:
140 137
141* 设置统一应用于组织中的所有用户。尚不支持按组配置。138* 设置统一应用于组织中的所有用户。尚不支持按组配置。
142* [`managed-mcp.json`](/zh-CN/managed-mcp) 文件无法通过服务器管理的设置分发。改为在那里传递 `allowedMcpServers` 和 `deniedMcpServers` 策略键。139* 您无法通过服务器管理的设置分发 [`managed-mcp.json`](/docs/zh-CN/managed-mcp) 文件。改为在那里传递 `allowedMcpServers` 和 `deniedMcpServers` 策略键。在 Claude Code v2.1.259 或更高版本上,您还可以通过 [`managedMcpServers`](/docs/zh-CN/managed-mcp#provide-servers-through-managed-settings) 提供远程服务器,它仅接受 `http` 和 `sse` 服务器,并且不会像文件那样获得独占控制。
143* 限制于操作系统级别策略源的设置,如 `policyHelper` 和 `wslInheritsWindowsSettings`,不被遵守。改为通过 MDM 或系统 `managed-settings.json` 文件部署它们。140
141 Claude Code 在其[系统路径](/docs/zh-CN/managed-mcp#exclusive-control-with-managed-mcp-json)处部署的 `managed-mcp.json` 与托管设置层分开读取,因此当服务器管理的设置生效时,该文件仍然适用。
142* 限制于操作系统级别策略源的设置,如 `policyHelper` 和 `wslInheritsWindowsSettings`,不被遵守。改为通过 MDM 或系统 `managed-settings.json` 文件部署它们。在[托管层内的优先级](/docs/zh-CN/managed-settings#precedence-within-the-managed-tier)下选择的源是该源时,以这种方式部署的 `policyHelper` 仅运行。
144 143
145<h2 id="settings-delivery">144<h2 id="settings-delivery">
146 设置传递145 设置传递
150 设置优先级149 设置优先级
151</h3>150</h3>
152 151
153服务器管理的设置和[端点管理的设置](/zh-CN/settings#settings-files)都占据 Claude Code [设置层次结构](/zh-CN/settings#settings-precedence)中的最高层。没有其他设置级别可以覆盖它们,包括命令行参数。152服务器管理的设置和[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)都占据 Claude Code [设置层次结构](/docs/zh-CN/settings#settings-precedence)中的最高层。没有其他设置级别可以覆盖它们,包括命令行参数,除了[托管设置优先级的例外](/docs/zh-CN/settings#exceptions-to-managed-settings-precedence)。
153
154在托管层内,Claude Code 默认使用首先传递至少一个策略键的源,首先检查服务器管理的设置,然后检查端点管理的设置,除了[接下来涵盖的例外键](#per-key-exceptions-across-managed-sources)。[Claude Code 如何组合托管源](/docs/zh-CN/managed-settings#precedence-within-the-managed-tier)包含完整的排名、控制键的例外以及适用于每个源的选择加入。
154 155
155在托管层内,配置的 [`policyHelper`](/zh-CN/settings#compute-managed-settings-with-a-policy-helper) 优先于所有其他托管源,包括服务器管理的设置:其输出成为该运行的唯一托管配置。156如果选定的源是 MDM 策略或托管设置文件,其 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 提供托管设置,则该助手的输出替换该源,成为该运行的唯一托管配置。当服务器管理的设置传递策略键时,Claude Code 不会查询在 MDM 或基于文件的设置中配置的 `policyHelper`。
156 157
157否则,Claude Code 使用首先传递非空配置的源。首先检查服务器管理的设置,然后检查端点管理的设置。源不合并:如果服务器管理的设置传递任何键,其他端点管理的设置将被完全忽略。如果服务器管理的设置不传递任何内容,端点管理的设置将应用。158如果后续获取发现服务器管理的设置已被移除,Claude Code 会立即运行该助手,而不是在下次启动时运行。[`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 条目涵盖该运行失败时会发生什么。
159
160如果您在管理控制台中清除服务器管理的配置,意图回退到端点管理的 plist 或注册表策略,请注意[缓存的设置](#fetch-and-caching-behavior)在客户端机器上持久化,直到下次成功获取,而[仅在下次启动时应用](#fetch-and-caching-behavior)的键(例如 `model`)保持有效,直到每个客户端重新启动。运行 `/status` 查看哪个托管源处于活动状态。
161
162<h3 id="per-key-exceptions-across-managed-sources">
163 跨托管源的每键例外
164</h3>
158 165
159有一个例外适用:当任何管理员控制的托管源设置一小组[跨源锁定键](/zh-CN/settings#settings-precedence)(例如沙箱允许列表锁)时,这些键会被遵守;用户可写的 HKCU 注册表层被排除。166两种类型的键是无合并规则的例外:
160 167
161如果您清除管理控制台中的服务器管理配置,意图回退到端点管理的 plist 或注册表策略,请注意[缓存的设置](#fetch-and-caching-behavior)在客户端机器上持久化,直到下次成功获取。运行 `/status` 查看哪个托管源处于活动状态。168* **跨源锁定键**:一小组键,例如沙箱允许列表锁,[列在托管设置页面上](/docs/zh-CN/managed-settings#precedence-within-the-managed-tier)。当任何管理员控制的托管源设置它们时,Claude Code 会遵守它们;用户可写的 HKCU 注册表层被排除。当 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 提供托管设置时,其输出是这些检查读取的唯一源,除了 [`forceRemoteSettingsRefresh`](/docs/zh-CN/settings-reference#forceremotesettingsrefresh),Claude Code 在启动时直接从管理员源读取它。
169* **`env` 块**:除了与凭证键配对的遥测单元和路由变量(下面涵盖)外,它在管理员控制的源之间按键合并。对于每个环境变量,定义它的最高优先级源获胜,较低的管理员源填充较高源未设置的变量。因此,端点管理的 `env` 条目在服务器管理的配置未设置该变量时应用,或在该变量的缓存服务器值[等待服务器确认而被暂扣](#fetch-and-caching-behavior)期间应用。需要 Claude Code v2.1.223 或更高版本。在 v2.1.223 之前,Claude Code 仅应用选定源的整个 `env` 块。
170 * **遥测单元**:`OTEL_EXPORTER_OTLP_*` 导出器键、`OTEL_LOG_*` 内容捕获切换、`OTEL_LOGS_EXPORTER` 以及测试版跟踪变量 `ENABLE_BETA_TRACING_DETAILED` 和 `BETA_TRACING_ENDPOINT` 遵循设置其中任何一个的最高源作为一个单元。传递 `otelHeadersHelper` 凭证键的源也声称该单元,但仅在它是选定源时才放置这些变量:未被选定但传递该键的源不贡献其中任何一个,仍然阻止较低源填充它们。无论哪种方式,来自一个源的导出器端点永远不能与来自另一个源的凭证配对。
171 * **凭证配对的路由**:将路由变量与选定源专用凭证键(例如 `apiKeyHelper` 或 `otelHeadersHelper`)配对的源仅在它赢得该槽位时贡献这些路由变量。
162 172
163<h3 id="fetch-and-caching-behavior">173<h3 id="fetch-and-caching-behavior">
164 获取和缓存行为174 获取和缓存行为
166 176
167Claude Code 在启动时从 Anthropic 的服务器获取设置,并在活动会话期间每小时轮询一次更新。177Claude Code 在启动时从 Anthropic 的服务器获取设置,并在活动会话期间每小时轮询一次更新。
168 178
179通过[Claude 应用网关](#platform-availability)登录的客户端从网关获取其设置,并在会话开始前等待该获取,因此下面列表中的获取不适用于它。[强制执行故障关闭启动](#enforce-fail-closed-startup)涵盖该获取失败时会发生什么。
180
169**首次启动而无缓存的设置:**181**首次启动而无缓存的设置:**
170 182
171* Claude Code 异步获取设置183* 当开发者在启动时登录时,例如在首次运行或 `/logout` 后,Claude Code 在打开会话前最多等待五秒钟以获取。当策略及时到达时,Claude Code 从第一个屏幕开始强制执行它,并在其上显示您的 [`companyAnnouncements`](/docs/zh-CN/settings-reference#companyannouncements)。当有效负载需要[安全批准](#security-approval-dialogs)时,Claude Code 结束等待,并在开发者批准后应用有效负载
172* 如果获取失败,Claude Code 继续运行而不使用托管设置184* 在任何其他启动中,以及当该五秒钟等待超时时,Claude Code 在获取继续进行时打开会话,因此在设置加载和限制生效前会有一个简短的窗口
173* 在设置加载之前有一个简短的窗口,其中限制尚未被强制执行185* 如果获取失败,Claude Code 继续运行而不使用服务器管理的设置,并在交互式会话中警告没有远程策略适用;端点管理的设置仍然适用。如果托管源设置了 [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup),Claude Code 会退出
174 186
175**后续启动且有缓存的设置:**187**后续启动且有缓存的设置:**
176 188
177* 缓存的设置在启动时立即应用,除了下面描述的传输、路由和身份验证环境变量189* 缓存的设置在启动时立即应用,除了缓存的 `modelPricing` 和 `managedMcpServers` 值以及 Claude Code 在服务器确认有效负载之前暂扣的环境变量
190* 缓存的 [`modelPricing`](/docs/zh-CN/settings-reference#modelpricing) 在会话的获取确认有效负载前不适用。在那之前,开发者在 `/usage` 中看到的成本数字和状态行处于列表价格
191* 缓存的 [`managedMcpServers`](/docs/zh-CN/settings-reference#managedmcpservers) 块在会话的获取确认有效负载前不适用。Claude Code 在连接 MCP 服务器前最多等待 30 秒以获取。如果获取失败或超时,会话启动时不使用组织的服务器,`/status` 会说明这一点,它们在后续获取确认它们后连接。有关完整行为(包括首次启动),请参阅[何时提供的服务器连接](/docs/zh-CN/managed-mcp#when-provided-servers-connect)。需要 Claude Code v2.1.259 或更高版本
178* Claude Code 在后台获取新鲜设置192* Claude Code 在后台获取新鲜设置
179* 缓存的设置通过网络故障持久化。被保留的环境变量保持被保留状态,直到获取成功193* 缓存的设置通过网络故障持久化。如果启动获取失败,Claude Code 在交互式会话中警告缓存的策略有效
194* 在某次获取成功之前,启动时被暂扣的值保持暂扣状态
180 195
181从 v2.1.198 开始,Claude Code 在缓存的 `env` 块中保留三类变量,直到服务器确认该会话的有效负载。这可以防止缓存的代理、证书颁发机构、端点或凭证值重定向、拦截或重新身份验证确认有效负载的设置获取。加固仅适用于服务器获取的设置缓存:通过 MDM 或 `managed-settings.json` 部署的[端点管理的设置](/zh-CN/settings#settings-files)不受影响。被保留的类别是:196Claude Code 会暂扣缓存的 `env` 块中的多个变量类别,直到服务器确认该会话的有效负载。这可以防止缓存的代理、证书颁发机构、端点或凭证值重定向、拦截或重新身份验证确认有效负载的设置获取。加固仅适用于服务器获取的设置缓存:通过 MDM 或 `managed-settings.json` 部署的[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)不受影响。该暂扣机制需要 Claude Code v2.1.198 或更高版本;在 v2.1.198 之前,整个缓存的 `env` 块在启动时应用。被暂扣的类别包括:
182 197
183* 代理和 TLS 配置,例如 `HTTPS_PROXY`、`NODE_EXTRA_CA_CERTS` 和 mTLS 客户端证书变量 `CLAUDE_CODE_CLIENT_CERT` 和 `CLAUDE_CODE_CLIENT_KEY`198* 代理和 TLS 配置,例如 `HTTPS_PROXY`、`NODE_EXTRA_CA_CERTS` 以及 mTLS 客户端证书变量 `CLAUDE_CODE_CLIENT_CERT` 和 `CLAUDE_CODE_CLIENT_KEY`
184* API 路由和提供商选择,包括 `ANTHROPIC_BASE_URL`、提供商选择变量(例如 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_VERTEX`)以及提供商端点 URL(例如 `ANTHROPIC_BEDROCK_BASE_URL`)199* API 路由和提供商选择,包括 `ANTHROPIC_BASE_URL`、提供商选择变量(例如 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_VERTEX`)以及提供商端点 URL(例如 `ANTHROPIC_BEDROCK_BASE_URL`)
185* 身份验证凭证,例如 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 和 `CLAUDE_CODE_OAUTH_TOKEN`200* 身份验证凭证,例如 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 和 `CLAUDE_CODE_OAUTH_TOKEN`
201* 配置目录选择器 `CLAUDE_CONFIG_DIR`
202* 凭证源和配置目录选择器,在 Claude Code v2.1.223 或更高版本中:工作负载身份联合变量(例如 `ANTHROPIC_FEDERATION_RULE_ID` 和 `ANTHROPIC_IDENTITY_TOKEN`)、配置文件和配置目录选择器 `ANTHROPIC_PROFILE` 和 `ANTHROPIC_CONFIG_DIR` 以及操作系统目录变量 `HOME`、`XDG_CONFIG_HOME`、`APPDATA` 和 `USERPROFILE`
203
204Claude Code 仅在启动时读取工作负载身份联合变量以及 `ANTHROPIC_PROFILE` 和 `ANTHROPIC_CONFIG_DIR` 选择器,因此服务器传递的值不会在获取成功后切换会话的凭证源。要在 Claude Code v2.1.223 或更高版本上传递这些选择器,请使用[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms),例如 MDM 或 `managed-settings.json`。对于 `CLAUDE_CONFIG_DIR` 和操作系统目录变量,暂扣本身就是保护:缓存的值保持在环境之外,直到服务器确认有效负载。
186 205
187缓存 `env` 块中的所有其他键(例如遥测和 OpenTelemetry 配置)在启动时应用,如前所述。获取成功后,被保留的变量在会话的其余时间应用。206缓存的 `env` 块中的所有其他键在启动时应用。一旦服务器确认有效负载,并且如果需要[安全批准](#security-approval-dialogs)您批准它,被暂扣的变量在会话的其余时间应用。
188 207
189如果您的组织需要代理来访问 `api.anthropic.com`,请在 shell 环境或[用户设置](/zh-CN/settings#settings-files)中设置它,而不仅仅在托管 `env` 块中。首次启动没有缓存,所以这些源已经是初始获取所必需的。208如果您的组织需要代理来访问 `api.anthropic.com`,暂扣仅影响服务器传递的 `env` 块本身:通过 MDM 或 `managed-settings.json` 在[端点管理的](/docs/zh-CN/managed-settings#delivery-mechanisms) `env` 块中设置的代理、在 shell 环境中或在[用户设置](/docs/zh-CN/settings#where-settings-live)中到达设置获取。端点管理的源需要 Claude Code v2.1.223 或更高版本:缓存的服务器管理的代理值会被暂扣,直到获取确认它,因此端点管理的值按键填充并到达获取本身。在 v2.1.223 之前,使用 shell 环境或用户设置,以便代理与缓存的服务器有效负载一起应用。首次启动没有缓存,因此端点管理的源、shell 环境或用户设置仍然需要初始获取。
190 209
191Claude Code 自动应用设置更新而无需重新启动,除了高级设置(如 OpenTelemetry 配置)需要完全重新启动才能生效。210Claude Code 将大多数设置更新应用于运行的会话而无需重新启动。某些更新仅在下次启动时应用,包括 OpenTelemetry 导出器配置、`model` 键以及从 `env` 块中移除变量。
192 211
193<h3 id="invalid-entries-in-delivered-settings">212<h3 id="invalid-entries-in-delivered-settings">
194 已传递设置中的无效条目213 已传递设置中的无效条目
195</h3>214</h3>
196 215
197已传递的有效负载使用与其他托管源相同的规则进行容错解析。当有效负载包含未通过架构验证的条目时,Claude Code 会删除该条目、显示验证错误,并应用每个剩余的有效设置。有关字段级行为的详细信息,请参阅[托管设置中的无效条目](/zh-CN/settings#invalid-entries-in-managed-settings),包括如何处理安全强制字段。需要 Claude Code v2.1.169 或更高版本。216当有效负载的一部分未通过架构验证时,Claude Code 会显示验证错误并应用每个剩余的有效设置;[托管设置中的无效条目](/docs/zh-CN/managed-settings#invalid-entries-in-managed-settings)说明它删除了什么以及哪些键回退到更严格的值。需要 Claude Code v2.1.169 或更高版本。
198 217
199服务器管理的传递添加了这些行为:218服务器管理的传递添加了这些行为:
200 219
201* 位于 `~/.claude/remote-settings.json` 的缓存存储已删除无效条目的已保存有效负载。原始无效有效负载永远不会被持久化。220* 位于 `~/.claude/remote-settings.json` 的缓存存储已删除无效条目的已保存有效负载,除了无效的 `cleanupPeriodDays` 和 `desktopSessionCleanupPeriodDays` 值,它们保留在缓存副本中,永远不会被应用。
202* 当有效负载中没有字段可以被保存时,Claude Code 保留最后接受的缓存设置并记录致命错误。221* 当有效负载中没有字段可以被保存,且有效负载不仅仅是那些保留键时,Claude Code 拒绝有效负载,保留最后接受的缓存设置,并将 `Remote settings: Settings validation failed - no fields could be salvaged` 写入调试日志。设置了 `forceRemoteSettingsRefresh` 时,CLI 会退出。
203* [安全批准对话框](#security-approval-dialogs)评估已保存的有效负载,因此被删除的无效条目永远不会被呈现以供批准,也永远不会执行。222* [安全批准对话框](#security-approval-dialogs)评估已保存的有效负载,因此被删除的无效条目永远不会被呈现以供批准,也永远不会执行。
204 223
205要调试传递问题,请运行 `claude --debug-file <path>` 并在日志中搜索 `Remote settings`。在向组织推出有效负载更改之前,使用 `claude doctor` 在测试机器上验证有效负载更改。224要调试传递问题,请运行 `claude --debug-file <path>` 并在日志中搜索 `Remote settings`。在向组织推出有效负载更改之前,使用 `claude doctor` 在测试机器上验证有效负载更改。
208 强制执行故障关闭启动227 强制执行故障关闭启动
209</h3>228</h3>
210 229
211默认情况下,如果远程设置获取在启动时失败,CLI 继续运行而不使用托管设置。对于这个简短的未强制执行窗口不可接受的环境,在您的托管设置中设置 `forceRemoteSettingsRefresh: true`。230默认情况下,如果远程设置获取在启动时失败,CLI 继续运行,使用从上次成功获取缓存的设置,但 [Claude Code 在获取成功前暂扣的值](#fetch-and-caching-behavior)除外。在从未获取过它们的机器上,CLI 继续运行而不使用服务器管理的设置,仍然应用设备上的任何[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)。
231
232要阻止客户端在缓存或缺失的服务器管理的设置上启动,请在您的托管设置中设置 `forceRemoteSettingsRefresh: true`。
233
234通过[Claude 应用网关](#platform-availability)登录的客户端无论您是否设置此项都会等待启动获取,并按如下方式处理失败的获取:
235
236* 如果网关用 `401` 回答有人值守的交互式启动,且此设置关闭,网关已结束该登录。Claude Code 打印 [`Cloud gateway session expired — run /login to reconnect.`](/docs/zh-CN/errors#cloud-gateway-session-expired) 并打开会话,从网关登出,直到用户运行 `/login`。
237* 当获取以任何其他方式失败,或在除 `claude auth` 子命令外的任何其他类型的启动中,客户端以错误退出。
212 238
213当此设置处于活动状态时,CLI 在启动时阻止,直到远程设置被新鲜获取。如果获取失败,CLI 退出而不是继续运行而不使用策略。此设置自我延续:一旦从服务器传递,它也会在本地缓存,以便后续启动即使在新会话的首次成功获取之前也强制执行相同的行为。239当此设置在获取服务器管理的设置的会话中处于活动状态时,CLI 在启动时阻止,直到远程设置被新鲜获取。如果获取失败,CLI 退出而不是继续运行而不使用策略。此设置自我延续:一旦从服务器传递,它也会在本地缓存,以便后续启动即使在新会话的首次成功获取之前也强制执行相同的行为。[不获取服务器管理的设置](#platform-availability)的会话启动时不等待。
214 240
215要启用此功能,请将键添加到您的托管设置配置中:241要启用此功能,请将键添加到您的托管设置配置中:
216 242
220}246}
221```247```
222 248
223您也可以在[端点管理的](/zh-CN/settings#settings-files) MDM 配置文件或系统 `managed-settings.json` 文件中设置此键,以在首次启动时强制执行故障关闭行为,在任何服务器有效负载被传递之前。从 v2.1.191 开始,此标志是上述[优先级规则](#settings-precedence)的例外:当在任何托管源中设置时,即使也存在缓存的服务器管理有效负载,它也会被遵守,因此当服务器管理的设置存在时,MDM 传递的值不会被忽略。249您也可以在[端点管理的](/docs/zh-CN/managed-settings#delivery-mechanisms) MDM 配置文件或系统 `managed-settings.json` 文件中设置此键,以在首次启动时强制执行故障关闭行为,在任何服务器有效负载被传递之前。在 Claude Code v2.1.191 或更高版本中,此标志是上述[优先级规则](#settings-precedence)的例外:当任何管理员控制的托管源设置它时,Claude Code 会遵守它,即使也存在缓存的服务器管理有效负载,因此当服务器管理的设置存在时,MDM 传递的值不会被忽略。
250
251当 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 提供托管设置时,其输出替换 Claude Code 在启动后读取的键的所有其他托管源。有关 Claude Code 从哪些源读取此键的信息,请参阅[其设置条目](/docs/zh-CN/settings-reference#forceremotesettingsrefresh)。`policyHelper` 条目说明 Claude Code 从哪些源读取助手以及何时运行它。
224 252
225设置获取还发送 `Cache-Control: no-cache` 标头,以便中间 HTTP 代理不会提供陈旧的响应。253设置获取还发送 `Cache-Control: no-cache` 标头,以便中间 HTTP 代理不会提供陈旧的响应。
226 254
227在启用此设置之前,请确保您的网络策略允许连接到 `api.anthropic.com`。如果该端点无法访问,CLI 在启动时退出,用户无法启动 Claude Code。255在启用此设置之前,请确保您的网络策略允许连接到 `api.anthropic.com`。如果该端点无法访问,CLI 在启动时退出,用户无法启动 Claude Code。
228 256
229从 v2.1.139 开始,`claude auth` 子命令(如 `claude auth login`)不受此检查的限制,因此当过期的凭证是设置获取失败的原因时,用户可以重新身份验证。257`claude auth` 子命令(例如 `claude auth login`)不受此检查和网关启动退出的限制,因此用户可以在过期的凭证是设置获取失败的原因时重新身份验证。
230 258
231<h3 id="security-approval-dialogs">259<h3 id="security-approval-dialogs">
232 安全批准对话框260 安全批准对话框
233</h3>261</h3>
234 262
235某些可能带来安全风险的设置在应用前需要明确的用户批准:263某些可能带来安全风险的设置在 Claude Code 在交互式会话中应用它们之前需要明确的用户批准:
236 264
237* **Shell 命令设置**:执行 shell 命令的设置265* **Shell 命令设置**:执行 shell 命令的设置,例如 `apiKeyHelper`、`statusLine` 和 `otelHeadersHelper`
238* **自定义环境变量**:不在已知安全允许列表中的变量266* **沙箱二进制设置**:`sandbox.bwrapPath`、`sandbox.socatPath` 和 `sandbox.ripgrep`。这些设置中的每一个都指向一个可执行文件,Claude Code 运行该可执行文件
267* **沙箱网络和隔离设置**:[沙箱](/docs/zh-CN/sandboxing)设置,让沙箱代理读取、重新路由或身份验证流量,或削弱沙箱的隔离:`sandbox.network.tlsTerminate`、`sandbox.network.httpProxyPort`、`sandbox.network.socksProxyPort`、`sandbox.credentials`、`sandbox.allowAppleEvents`、`sandbox.enableWeakerNestedSandbox`、`sandbox.enableWeakerNetworkIsolation`、`sandbox.filesystem.disabled`、`sandbox.network.allowAllUnixSockets`、`sandbox.network.allowUnixSockets` 和 `sandbox.network.allowMachLookup`。仅包含 `deny` 规则的 `sandbox.credentials` 块不需要批准,因为它限制沙箱而不给代理凭证。在 v2.1.251 之前,Claude Code 应用这些设置而无需批准
268* **自定义环境变量**:传递的 `env` 变量,需要用户批准,例如代理和基础 URL 变量;请参阅[环境变量和批准对话框](#environment-variables-and-the-approval-dialog)
239* **Hook 配置**:任何 hook 定义269* **Hook 配置**:任何 hook 定义
240* **托管 CLAUDE.md 内容**:通过托管设置传递的 `claudeMd` 值
241 270
242当这些设置存在时,用户会看到一个安全对话框,解释正在配置的内容。用户必须批准才能继续。如果用户拒绝设置,Claude Code 会退出。271当这些设置存在时,用户会看到一个安全对话框,解释正在配置的内容。用户必须批准才能继续。如果用户拒绝设置,Claude Code 会退出。
243 272
244<Note>273通过 [`claudeMd`](/docs/zh-CN/settings-reference#claudemd) 键传递的托管 CLAUDE.md 不需要批准,因为它是 Claude 的指令文本,而不是 Claude Code 运行的命令。Claude Code 仍然检查 Claude 在遵循这些指令时使用的工具的[权限](/docs/zh-CN/permissions)。在 v2.1.260 之前,`claudeMd` 值需要批准。
245 非交互式运行(例如 `claude -p` 或 Agent SDK 会话)无法显示对话框。当传递的设置需要批准时,Claude Code 仅为该运行应用它们:它不会将它们记录为已批准或写入[本地缓存](#fetch-and-caching-behavior),下一个交互式会话会显示对话框。在用户在交互式会话中批准之前,每个非交互式运行都会在启动时再次获取设置。在 v2.1.207 之前,非交互式运行会将设置保存为已批准,因此后来的交互式会话永远不会为它们显示对话框。274
246</Note>275<h4 id="approval-memory">
276 批准记忆
277</h4>
278
279Claude Code 在您的配置目录 `~/.claude` 中记录您的批准,除非您设置 [`CLAUDE_CONFIG_DIR`](/docs/zh-CN/env-vars)。它记录的内容取决于设置获取使用的凭证:
280
281* **通过 `/login` 或 `claude auth login` 保存的 claude.ai 登录,或[无密钥控制台登录](/docs/zh-CN/authentication#sign-in-without-an-api-key)**:每个组织一个批准,由最近批准的账户持有。
282* **[Claude 应用网关](/docs/zh-CN/claude-apps-gateway)登录**:每个网关一个批准。
283
284 如果您登出并重新登录到同一网关,当需要批准的设置未更改时,Claude Code 不会再次显示对话框。当这些设置更改、您登录到不同的网关以及您为同一网关接受新证书时,Claude Code 会再次显示它。
285
286 Claude Code 不为通过纯 HTTP 到达的环回开发网关保存批准,因此对话框在每次登录后再次出现。
287* **任何其他凭证**,例如 API 密钥或 `CLAUDE_CODE_OAUTH_TOKEN`:一个批准用于传递的设置,与该配置目录中设置的缓存副本一起保留。当需要批准的设置更改时,Claude Code 会显示对话框,在您运行 `/logout` 或 `claude auth logout` 后,其中任何一个都会删除缓存副本。
288
289使用保存的 claude.ai 登录:
290
291* 如果您登出并重新登录,或切换到另一个组织,稍后返回,当这些设置未更改时,Claude Code 不会再次显示对话框,除非另一个账户在同一配置目录中为该组织批准了它们。
292* 如果您使用不同的账户登录到同一组织,即使设置未更改,Claude Code 也会再次显示对话框。该账户的批准替换前一个,因此当您切换回来时,Claude Code 会再次显示对话框。
293
294Claude Code 无法始终显示对话框。下面的每种情况说明当它无法显示时哪些设置适用,以及您何时下次看到对话框:
295
296* **无法显示对话框的交互式会话**:Claude Code 不应用传递的设置,保留最后批准的设置。对话框在下一个可以显示它的会话中出现。需要 Claude Code v2.1.211 或更高版本。
297* **`claude install` 或 `claude update`**:Claude Code 在任何命令期间都不显示对话框。该命令使用最后批准的设置运行,对话框在您的下一个交互式会话中出现。如果 Claude Code 在启动时等待设置获取,例如设置了 [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) 或在[Claude 应用网关](/docs/zh-CN/claude-apps-gateway)部署上,它会在命令期间显示对话框,从管道运行的安装失败;请参阅[安装期间 `Raw mode is not supported`](/docs/zh-CN/troubleshoot-install#raw-mode-is-not-supported-during-install)。在 v2.1.246 之前,Claude Code 也尝试在这些命令期间显示对话框。
298* **错误在您回答前关闭对话框**:Claude Code 不应用传递的设置,保留最后批准的设置。它在下一个可以显示它的会话中再次显示对话框。
299* **非交互式运行**,例如 `claude -p` 或 Agent SDK 会话:Claude Code 无法显示对话框,因此当传递的设置需要批准时,它仅为该运行应用它们。它不将它们记录为已批准或写入[本地缓存](#fetch-and-caching-behavior),下一个交互式会话会显示对话框。在用户在交互式会话中批准之前,每个非交互式运行都会在启动时再次获取设置。在 v2.1.207 之前,非交互式运行会将设置保存为已批准,因此后来的交互式会话永远不会为它们显示对话框。
300
301<h4 id="environment-variables-and-the-approval-dialog">
302 环境变量和批准对话框
303</h4>
304
305Claude Code 应用某些传递的 `env` 变量而不显示用户批准对话框,包括:
306
307* 功能和命令切换
308* 模型选择和行为设置,例如 `ANTHROPIC_MODEL`、`DISABLE_PROMPT_CACHING` 和 `CLAUDE_CODE_EFFORT_LEVEL`
309* 上下文窗口和压缩设置,例如 `DISABLE_AUTO_COMPACT`
310* 终端 UI 和可访问性选项
311* 数字限制、预算和超时
312
313其他传递的变量可能需要用户批准才能生效;非空代理、基础 URL 或 `OTEL_EXPORTER_OTLP_ENDPOINT` 值总是这样。当传递的变量需要批准时,对话框会命名它,因此用户会看到策略要求设置的确切内容。在 v2.1.218 之前,Claude Code 应用较少的变量而不询问用户,因此 `DISABLE_AUTO_COMPACT` 等设置在任何非空值时触发对话框。
314
315Claude Code 根据传递的值而不是变量名称决定四个隐私切换是否需要批准:`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`、`DISABLE_ERROR_REPORTING`、`DISABLE_TELEMETRY` 和 `DO_NOT_TRACK`。真值(例如 `1` 或 `true`)仅关闭跟踪、报告或其他非必要流量,因此 Claude Code 应用它而不询问用户。对于任何其他非空值,Claude Code 会显示对话框。在 v2.1.218 之前,除了 `DO_NOT_TRACK` 外的所有这些都在任何值时应用而无需批准,`DO_NOT_TRACK` 在任何非空值时触发对话框。
316
317Claude Code 也根据传递的值决定 [`API_FORCE_IDLE_TIMEOUT`](/docs/zh-CN/env-vars) 是否需要批准:真值仅打开[主体空闲超时](/docs/zh-CN/network-config#streaming-idle-watchdogs),因此 Claude Code 应用它而不询问用户。对于任何其他非空值,Claude Code 会显示对话框。在 v2.1.248 之前,任何非空值都触发对话框。
318
319[`ANTHROPIC_CUSTOM_HEADERS`](/docs/zh-CN/env-vars#variables) 是否需要批准也取决于传递的值。仅标记请求的标头(例如 `Accept-Language`)应用而无需对话框。命名凭证、组织或租户选择器、路由或主机覆盖或 API 行为标头(例如 `Authorization`、`X-Api-Key`、`Host`、`anthropic-beta` 或 `X-Amzn-Bedrock-*` 标头)的行需要批准。名称不是有效 HTTP 标头令牌的行,或其值包含 HTTP 标头无法携带的字符的行也需要。检查与标头名称内的单词匹配,因此包含 `client` 和 `version` 的 `X-Client-Version` 也需要批准。在 v2.1.251 之前,任何 `ANTHROPIC_CUSTOM_HEADERS` 值应用而无需它。
320
321[`ENABLE_BETA_TRACING_DETAILED`](/docs/zh-CN/env-vars#variables) 或 [`OTEL_LOG_RAW_API_BODIES`](/docs/zh-CN/env-vars#variables) 的假值(例如 `0` 或 `false`)应用而无需对话框,因为它仅关闭详细跟踪或原始 API 主体捕获。任何其他非空值对于任一变量都需要批准。
247 322
248<h2 id="platform-availability">323<h2 id="platform-availability">
249 平台可用性324 平台可用性
250</h2>325</h2>
251 326
252服务器管理的设置需要直接连接到 `api.anthropic.com`,并且交付需要会话使用组织 OAuth 登录或直接配置的 API 密钥进行身份验证。由 [`apiKeyHelper`](/zh-CN/settings#available-settings) 脚本返回的密钥不会触发设置获取。327服务器管理的设置需要直接连接到 `api.anthropic.com`。交付还需要会话使用以下凭证之一进行身份验证:
328
329* Team 或 Enterprise OAuth 登录
330* 通过 `CLAUDE_CODE_OAUTH_TOKEN` 提供的 OAuth 令牌
331* 直接配置的 API 密钥
332* 一个 `user_oauth` [Anthropic 配置文件](/docs/zh-CN/authentication#anthropic-profiles-and-federation-credentials),除非该配置文件设置了 Anthropic API 以外的 `base_url`。需要 Claude Code v2.1.257 或更高版本。
333
334由 [`apiKeyHelper`](/docs/zh-CN/settings-reference#apikeyhelper) 脚本返回的密钥和 [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) 凭证都不会触发设置获取。
253 335
254在使用第三方模型提供商时,服务器管理的设置不可用:336在 Claude Desktop 应用中的 [Cowork](https://claude.com/docs/cowork/overview) 会话中,即使用户使用 Team 或 Enterprise 账户登录,Claude Code 也不会从 claude.ai 管理控制台获取服务器管理的设置。[策略应用的位置和时间](/docs/zh-CN/managed-settings#where-and-when-a-policy-applies) 涵盖了哪些策略到达用户机器上的 Cowork 会话和远程 Cowork 会话。
255 337
256* Amazon Bedrock338如果您在 shell 中导出 `CLAUDE_CODE_USE_*` 提供商变量或非默认的 `ANTHROPIC_BASE_URL`,Claude Code 将跳过您的会话的设置获取。[`claude doctor` 和 `/status` 报告跳过的获取及其原因](#verify-settings-delivery)。
257* Google Cloud 的 Agent Platform
258* Microsoft Foundry
259* [Claude Platform on AWS](/zh-CN/claude-platform-on-aws)
260* 通过 `ANTHROPIC_BASE_URL` 或第三方 [LLM gateways](/zh-CN/llm-gateway) 的自定义 API 端点
261 339
262如果您在 shell 中导出 `CLAUDE_CODE_USE_*` 提供商变量或非默认的 `ANTHROPIC_BASE_URL`,Claude Code 将跳过您的会话的设置获取。您无法使用服务器管理的 `env` 块清除导出,因为该块通过导出阻止的获取到达。[端点管理的设置](/zh-CN/settings#settings-files) `env` 块也不会恢复获取:Claude Code 在应用管理的 `env` 块之前检查资格,因此覆盖会改变会话的提供商选择,但获取保持跳过。340您无法使用服务器管理的 `env` 块清除导出,因为该块通过导出阻止的获取到达。[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms) `env` 块也不会恢复获取:Claude Code 在应用管理的 `env` 块之前检查资格,因此端点管理的值改变会话的提供商选择,但获取保持跳过。
263 341
264要恢复服务器管理的交付,请从 shell 中删除导出,或在用户设置 `env` 块中将变量设置为 `""`,该块在资格检查之前应用。要在不依赖用户更改其 shell 的情况下强制执行策略,请改为通过端点管理的通道交付设置。342要恢复服务器管理的交付,请从 shell 中删除导出,或在用户设置 `env` 块中将变量设置为 `""`,该块在资格检查之前应用。要在不依赖用户更改其 shell 的情况下强制执行策略,请改为通过端点管理的通道交付设置。
265 343
266对于 Amazon Bedrock、Google Cloud 的 Agent Platform 和 Microsoft Foundry 部署,自托管的 [Claude apps gateway](/zh-CN/claude-apps-gateway) 提供等效的远程管理设置交付:网关登录的客户端从网关而不是 `api.anthropic.com` 获取管理设置。启动时的失败语义不同:无法到达网关的网关客户端以错误退出,而不是回退到缓存的设置,而每小时的后台刷新在两个通道上都是故障开放的。344对于 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 和 [Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 部署,自托管的 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway) 提供等效的远程管理设置交付:网关登录的客户端从网关而不是 `api.anthropic.com` 获取管理设置。启动时的失败语义不同:无法到达网关的网关客户端以错误退出,而不是回退到缓存的设置,而每小时的后台刷新在两个通道上都是故障开放的。
267 345
268<h2 id="audit-logging">346<h2 id="audit-logging">
269 审计日志347 审计日志
280服务器管理的设置提供集中的策略强制执行,但它们作为客户端控制运行,而不是安全边界。在非托管设备上,用户不需要管理员或 sudo 访问权限来绕过它们。358服务器管理的设置提供集中的策略强制执行,但它们作为客户端控制运行,而不是安全边界。在非托管设备上,用户不需要管理员或 sudo 访问权限来绕过它们。
281 359
282| 场景 | 行为 |360| 场景 | 行为 |
283| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |361| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
284| 用户编辑缓存的设置文件 | 篡改的文件在启动时应用,但正确的设置在下次服务器获取时恢复。从 v2.1.198 开始,`env` 块中的传输、API 路由和身份验证环境变量在[服务器确认有效负载后被保留](#fetch-and-caching-behavior) |362| 用户编辑缓存的设置文件 | 篡改的文件在启动时应用,但 Claude Code 在服务器确认有效负载前暂扣的[值](#fetch-and-caching-behavior)除外。下次服务器获取会恢复正确的设置,但[仅在下次启动时应用的键](#fetch-and-caching-behavior)除外,例如 `model` 或添加到 `env` 块的变量,这些会保持有效直到重新启动 |
285| 用户删除缓存的设置文件 | 首次启动行为发生:设置异步获取,有一个简短的未强制执行的窗口 |363| 用户删除缓存的设置文件 | 发生[首次启动行为](#fetch-and-caching-behavior) |
286| 用户运行修改的 Claude Code 二进制文件 | 能够运行修改的客户端的用户可以绕过任何客户端控制 |364| 用户运行修改的 Claude Code 二进制文件 | 能够运行修改的客户端的用户可以绕过任何客户端控制 |
287| 用户运行较旧的 Claude Code 版本 | 早于服务器管理设置的版本不会获取或应用它们 |365| 用户运行较旧的 Claude Code 版本 | 早于服务器管理设置的版本不会获取或应用它们 |
288| API 不可用 | 如果可用,缓存的设置应用,否则托管设置在下次成功获取前不被强制执行。从 v2.1.198 开始,缓存的 `env` 块中的传输、API 路由和身份验证环境变量在[获取失败时被保留](#fetch-and-caching-behavior);缓存的其余部分仍然适用。使用 `forceRemoteSettingsRefresh: true` 时,CLI 退出而不是继续,除了 [`claude auth` 子命令](#enforce-fail-closed-startup) |366| API 不可用 | 如果可用,缓存的设置应用,但 Claude Code 在获取成功前暂扣的[值](#fetch-and-caching-behavior)除外。没有缓存的情况下,Claude Code 在下次成功获取前不强制执行任何服务器管理的设置,但仍然在设备上应用任何[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)。使用 `forceRemoteSettingsRefresh: true` 时,CLI 退出而不是继续,但[`claude auth` 子命令](#enforce-fail-closed-startup)除外。通过[Claude 应用网关](#platform-availability)登录的客户端在启动时退出而没有该设置,具有相同的 `claude auth` 豁免 |
289| 用户使用不同的组织进行身份验证 | 不为托管组织外的账户传递设置 |367| 用户使用不同的组织进行身份验证 | 不为托管组织外的账户传递设置 |
290| 用户配置[第三方模型提供商](#platform-availability) | 服务器管理的设置被绕过。这包括设置 `CLAUDE_CODE_USE_BEDROCK`、`CLAUDE_CODE_USE_MANTLE`、`CLAUDE_CODE_USE_VERTEX`、`CLAUDE_CODE_USE_FOUNDRY`、`CLAUDE_CODE_USE_ANTHROPIC_AWS` 或非默认的 `ANTHROPIC_BASE_URL` |368| 用户配置[第三方模型提供商](#platform-availability) | 服务器管理的设置被绕过。这包括设置 `CLAUDE_CODE_USE_BEDROCK`、`CLAUDE_CODE_USE_MANTLE`、`CLAUDE_CODE_USE_VERTEX`、`CLAUDE_CODE_USE_FOUNDRY`、`CLAUDE_CODE_USE_ANTHROPIC_AWS` 或非默认的 `ANTHROPIC_BASE_URL` |
291| 网络流量被拦截或重定向 | 禁用的 TLS 验证或拦截的流量可以改变客户端接收的设置 |369| 网络流量被拦截或重定向 | 禁用的 TLS 验证或拦截的流量可以改变客户端接收的设置 |
292 370
293要检测运行时配置更改,请使用 [`ConfigChange` hooks](/zh-CN/hooks#configchange) 来记录修改或在未授权的更改生效前阻止它们。371要记录对本地设置文件(包括 `managed-settings.json`)的编辑,请使用 [`ConfigChange` hooks](/docs/zh-CN/hooks#configchange)。当服务器管理的设置到达或刷新时,或当 MDM 配置文件或注册表策略更改时,Claude Code 不会运行它们,并且 hook 无法阻止 `policy_settings` 更改。
294 372
295要限制用户可以使用客户端提供的凭证访问的组织,请参阅 Claude 帮助中心中的[使用租户限制强制执行网络级访问控制](https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions)。为了获得更强的强制执行保证,请在已在 MDM 解决方案中注册的设备上使用[端点管理的设置](/zh-CN/settings#settings-files)。373要限制用户可以使用客户端提供的凭证访问的组织,请参阅 Claude 帮助中心中的[使用租户限制强制执行网络级访问控制](https://support.claude.com/en/articles/13198485-enforce-network-level-access-control-with-tenant-restrictions)。为了获得更强的强制执行保证,请在已在 MDM 解决方案中注册的设备上使用[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)。
296 374
297<h2 id="see-also">375<h2 id="see-also">
298 另请参阅376 另请参阅
300 378
301用于管理 Claude Code 配置的相关页面:379用于管理 Claude Code 配置的相关页面:
302 380
303* [Settings](/zh-CN/settings):完整的配置参考,包括所有可用的设置381* [所有设置](/docs/zh-CN/settings-reference):每个设置键
304* [Endpoint-managed settings](/zh-CN/settings#settings-files):由 IT 部门部署到设备的托管设置382* [Endpoint-managed settings](/docs/zh-CN/managed-settings#delivery-mechanisms):由 IT 部门部署到设备的托管设置
305* [Authentication](/zh-CN/authentication):设置用户对 Claude Code 的访问383* [Authentication](/docs/zh-CN/authentication):设置用户对 Claude Code 的访问
306* [Security](/zh-CN/security):安全保障和最佳实践384* [Security](/docs/zh-CN/security):安全保障和最佳实践