@anthropic-ai/claude-agent-sdk 0.3.220 → 0.3.222

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/manifest.json CHANGED
@@ -1,52 +1,51 @@
1
1
  {
2
- "version": "2.1.220",
3
- "commit": "4073f59596e272f39393db4f96abc5f4b10eff21",
4
- "buildDate": "2026-07-24T22:28:51Z",
2
+ "version": "2.1.222",
3
+ "commit": "fbf49312c28437bf9c2546b9ace3bd7b34eb6ff6",
4
+ "buildDate": "2026-08-04T01:46:04Z",
5
5
  "platforms": {
6
6
  "darwin-arm64": {
7
7
  "binary": "claude",
8
- "checksum": "8addc857f3fe64d5a0368af9ee50321b50afb4a6918ba3ef018ab84f5dbbe081",
9
- "size": 256908272
8
+ "checksum": "c66a6cc6fa2e8145bb1a6e77831f2caf4b83690ff04650500dfa6e2c05ca997c",
9
+ "size": 271289792
10
10
  },
11
11
  "darwin-x64": {
12
12
  "binary": "claude",
13
- "checksum": "dca7be0aa7d3d924836d440e0c6d8e3d47ef3c8e61fa5809b54b9017170ce2f3",
14
- "size": 266397712
13
+ "checksum": "36bfc6482a25730dbb1cee72589e522c66c45a4dc9ebfdd8a76a8113b01b6188",
14
+ "size": 280847136
15
15
  },
16
16
  "linux-arm64": {
17
17
  "binary": "claude",
18
- "checksum": "159e4a51d796f3bf14677577100f7efb845611b1ceaf0c30cbd8d4650d942185",
19
- "size": 271825824
18
+ "checksum": "a04be0a8d7fe0259571ab7411d51d85658d71a4a26ce62b60c908290372e6016",
19
+ "size": 286178232
20
20
  },
21
21
  "linux-x64": {
22
22
  "binary": "claude",
23
- "checksum": "674f61f20ff306f3100cf9200e4c36c4b70278b5bef2884549819b942a89c863",
24
- "size": 275012592
23
+ "checksum": "10caae8f22b915c26bfff0e013a4d45608c4f1ae287583626569156f447730e5",
24
+ "size": 289467400
25
25
  },
26
26
  "linux-arm64-musl": {
27
27
  "binary": "claude",
28
- "checksum": "5eb2697a1500c1b8736e53fd696392196dc6758cf1d470c64d8d2a2fd1629eeb",
29
- "size": 265074024
28
+ "checksum": "a3c3e3202ae8842a5e9d2b4ce1dcea9fa00d4e0ae27b5b3e8d778332ba3bb23c",
29
+ "size": 279491944
30
30
  },
31
31
  "linux-x64-musl": {
32
32
  "binary": "claude",
33
- "checksum": "f1c20514a3571cdf9982e25c490042d740ed7cfed3f00c64ba92dc7ec47c3c5b",
34
- "size": 269636176
33
+ "checksum": "e0b0fb4005e1ac0ebcee136254c638722f1c49e171a23d0843c605d72aac9029",
34
+ "size": 284074576
35
35
  },
36
36
  "win32-x64": {
37
37
  "binary": "claude.exe",
38
- "checksum": "af5bf1f1b2aadffc768eccd787084c6fdf9ba81624cbe96c1c6d9ac1a1550231",
39
- "size": 265720480
38
+ "checksum": "032cb799d2abfaa6ca440f6458304b9a2a250521063d21ebcea7f3c77c443db7",
39
+ "size": 279014048
40
40
  },
41
41
  "win32-arm64": {
42
42
  "binary": "claude.exe",
43
- "checksum": "07343ace8a2e9ba87eed716e9c0261ce4bda8954c316695e4cb26fd0605de13c",
44
- "size": 260095648
43
+ "checksum": "f760aa2782019e55b1e44fda9eddec85ca8499429da87efddd47ab18d4a716a2",
44
+ "size": 273687200
45
45
  }
46
46
  },
47
47
  "sdkCompat": {
48
48
  "testedWrapperVersions": [
49
- "0.3.181",
50
49
  "0.3.182",
51
50
  "0.3.183",
52
51
  "0.3.185",
@@ -68,9 +67,15 @@
68
67
  "0.3.207",
69
68
  "0.3.208",
70
69
  "0.3.209",
70
+ "0.3.210",
71
+ "0.3.211",
72
+ "0.3.212",
73
+ "0.3.214",
71
74
  "0.3.215",
72
75
  "0.3.217",
73
- "0.3.218"
76
+ "0.3.218",
77
+ "0.3.220",
78
+ "0.3.221"
74
79
  ],
75
80
  "harnessSchema": 1
76
81
  }
package/manifest.zst.json CHANGED
@@ -1,60 +1,59 @@
1
1
  {
2
- "version": "2.1.220",
3
- "commit": "4073f59596e272f39393db4f96abc5f4b10eff21",
4
- "buildDate": "2026-07-24T22:30:51Z",
2
+ "version": "2.1.222",
3
+ "commit": "fbf49312c28437bf9c2546b9ace3bd7b34eb6ff6",
4
+ "buildDate": "2026-08-04T01:48:06Z",
5
5
  "platforms": {
6
6
  "darwin-arm64": {
7
7
  "binary": "claude.zst",
8
- "checksum": "bc30c97e9736447fba8bd2eac6a317d4aaadf269b09f20fcc4ef53dc649b21d6",
9
- "size": 52528564,
8
+ "checksum": "3d9167ec33e7075b37f3a141e95cd53781bae654935b33a0995a1296fca9d86e",
9
+ "size": 54481803,
10
10
  "bundle": {
11
- "checksum": "1ae58974156f01fcd6e4590e4dcb18740fcf98ba70f3f6f833038081ea6bc0af",
12
- "size": 52533430
11
+ "checksum": "e05b161d6c498b136ca4a33dad2cb3d1fb45e44748741e474d908c3bcda09db3",
12
+ "size": 54479945
13
13
  }
14
14
  },
15
15
  "darwin-x64": {
16
16
  "binary": "claude.zst",
17
- "checksum": "1017a8bdd8c02ce5df79ab0181110292bb6c3b48ae468a9fb6a3cac48c41951a",
18
- "size": 57135309,
17
+ "checksum": "3e35e6c90cf98da026bb3263e1b4f8f90f9ae8356b7091f5b3ee40acd133ea55",
18
+ "size": 59125253,
19
19
  "bundle": {
20
- "checksum": "ade9f5eebf5394766ada73d3c244d099140ca8c7a2e9ef244b1c4a22217e2b57",
21
- "size": 57139607
20
+ "checksum": "a70a9a94aa97a61d967f751c95b225224d726032417610eb310c41627dfbf33e",
21
+ "size": 59124389
22
22
  }
23
23
  },
24
24
  "linux-arm64": {
25
25
  "binary": "claude.zst",
26
- "checksum": "d663d771947513311a3af5de6e73f993688a7ff3357ea5b6f86726f2be65ae67",
27
- "size": 61240539
26
+ "checksum": "5b45d688c9413d1fab1cfc0fae36f1eac907913aca548a7689d213afdde5f911",
27
+ "size": 63220586
28
28
  },
29
29
  "linux-x64": {
30
30
  "binary": "claude.zst",
31
- "checksum": "ec2d84d88ae9f5e3c9e0ab21f8092f9df3c8d0c599a551dd91cddce23993e55e",
32
- "size": 62556070
31
+ "checksum": "913436d3e6b4707a022136cf4cdd35894e7b7b9f449a9ffa5caacc94404cacf1",
32
+ "size": 64686089
33
33
  },
34
34
  "linux-arm64-musl": {
35
35
  "binary": "claude.zst",
36
- "checksum": "a38ac99e050fc217485196fdee0fee4aaf5212d6c90e59508c1a966d4b97e914",
37
- "size": 59906737
36
+ "checksum": "cd6af30a333c74514f2b0855b7bb1460b2f49998921c3180e5bd9b2c73c2db6c",
37
+ "size": 62052400
38
38
  },
39
39
  "linux-x64-musl": {
40
40
  "binary": "claude.zst",
41
- "checksum": "27356dcc27e7ee42a70d8c3134a4b4ffdbabdcc879e035d7f387449e383a08f2",
42
- "size": 61358054
41
+ "checksum": "3708ff69cf0fc9cd5065d2228cdc862033146104d8be4690717ecf6087f1acd8",
42
+ "size": 63505036
43
43
  },
44
44
  "win32-x64": {
45
45
  "binary": "claude.exe.zst",
46
- "checksum": "8999275ddf501363a28692f9ef5267cfdc10ca54873e21c007de0107d1fac526",
47
- "size": 62943531
46
+ "checksum": "8fa68c162691c9952df710ab56548ded883d4830644a1fc84dfbc4cce90429c7",
47
+ "size": 64891486
48
48
  },
49
49
  "win32-arm64": {
50
50
  "binary": "claude.exe.zst",
51
- "checksum": "a1a2e4e30e91c4c1d2a676a6b5ec68b8987d1b00211c694215f19f5818999d8d",
52
- "size": 60936226
51
+ "checksum": "917682441d99ce6473a05ec26ce5943a6ced708766c094596a3970eb2eabf543",
52
+ "size": 63016178
53
53
  }
54
54
  },
55
55
  "sdkCompat": {
56
56
  "testedWrapperVersions": [
57
- "0.3.181",
58
57
  "0.3.182",
59
58
  "0.3.183",
60
59
  "0.3.185",
@@ -76,9 +75,15 @@
76
75
  "0.3.207",
77
76
  "0.3.208",
78
77
  "0.3.209",
78
+ "0.3.210",
79
+ "0.3.211",
80
+ "0.3.212",
81
+ "0.3.214",
79
82
  "0.3.215",
80
83
  "0.3.217",
81
- "0.3.218"
84
+ "0.3.218",
85
+ "0.3.220",
86
+ "0.3.221"
82
87
  ],
83
88
  "harnessSchema": 1
84
89
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anthropic-ai/claude-agent-sdk",
3
- "version": "0.3.220",
3
+ "version": "0.3.222",
4
4
  "main": "sdk.mjs",
5
5
  "types": "sdk.d.ts",
6
6
  "exports": {
@@ -57,14 +57,14 @@
57
57
  "zod": "^4.0.0"
58
58
  },
59
59
  "optionalDependencies": {
60
- "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.220",
61
- "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.220",
62
- "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.220",
63
- "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.220",
64
- "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.220",
65
- "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.220",
66
- "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.220",
67
- "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.220"
60
+ "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.222",
61
+ "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.222",
62
+ "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.222",
63
+ "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.222",
64
+ "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.222",
65
+ "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.222",
66
+ "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.222",
67
+ "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.222"
68
68
  },
69
69
  "files": [
70
70
  "sdk.mjs",
@@ -80,5 +80,5 @@
80
80
  "manifest.json",
81
81
  "manifest.zst.json"
82
82
  ],
83
- "claudeCodeVersion": "2.1.220"
83
+ "claudeCodeVersion": "2.1.222"
84
84
  }
package/sdk.d.ts CHANGED
@@ -625,7 +625,7 @@ export declare type ElicitationResultHookSpecificOutput = {
625
625
  content?: Record<string, unknown>;
626
626
  };
627
627
 
628
- export declare const EXIT_REASONS: readonly ["clear", "resume", "logout", "prompt_input_exit", "other", "bypass_permissions_disabled"];
628
+ export declare const EXIT_REASONS: readonly ['clear', 'resume', 'logout', 'prompt_input_exit', 'other', 'bypass_permissions_disabled'];
629
629
 
630
630
  export declare type ExitReason = 'clear' | 'resume' | 'logout' | 'prompt_input_exit' | 'other' | 'bypass_permissions_disabled';
631
631
 
@@ -813,7 +813,7 @@ export declare type GetSubagentMessagesOptions = {
813
813
  sessionStore?: SessionStore;
814
814
  };
815
815
 
816
- export declare const HOOK_EVENTS: readonly ["PreToolUse", "PostToolUse", "PostToolUseFailure", "PostToolBatch", "Notification", "UserPromptSubmit", "UserPromptExpansion", "SessionStart", "SessionEnd", "Stop", "StopFailure", "SubagentStart", "SubagentStop", "PreCompact", "PostCompact", "PermissionRequest", "PermissionDenied", "Setup", "TeammateIdle", "TaskCreated", "TaskCompleted", "Elicitation", "ElicitationResult", "ConfigChange", "WorktreeCreate", "WorktreeRemove", "InstructionsLoaded", "CwdChanged", "FileChanged", "DirectoryAdded", "MessageDisplay"];
816
+ export declare const HOOK_EVENTS: readonly ['PreToolUse', 'PostToolUse', 'PostToolUseFailure', 'PostToolBatch', 'Notification', 'UserPromptSubmit', 'UserPromptExpansion', 'SessionStart', 'SessionEnd', 'Stop', 'StopFailure', 'SubagentStart', 'SubagentStop', 'PreCompact', 'PostCompact', 'PermissionRequest', 'PermissionDenied', 'Setup', 'TeammateIdle', 'TaskCreated', 'TaskCompleted', 'Elicitation', 'ElicitationResult', 'ConfigChange', 'WorktreeCreate', 'WorktreeRemove', 'InstructionsLoaded', 'CwdChanged', 'FileChanged', 'DirectoryAdded', 'MessageDisplay'];
817
817
 
818
818
  /**
819
819
  * Hook callback function for responding to events during execution.
@@ -2060,7 +2060,7 @@ export declare type Options = {
2060
2060
  *
2061
2061
  * @alpha
2062
2062
  */
2063
- export declare const ORG_POLICY_LIMIT_PREFIXES: readonly ["This service is disabled for your org"];
2063
+ export declare const ORG_POLICY_LIMIT_PREFIXES: readonly ['This service is disabled for your org'];
2064
2064
 
2065
2065
  export declare type OutputFormat = JsonSchemaOutputFormat;
2066
2066
 
@@ -2705,18 +2705,29 @@ export declare type RewindFilesResult = {
2705
2705
  export declare type SandboxCredentialsConfig = NonNullable<z.infer<ReturnType<typeof SandboxCredentialsConfigSchema>>>;
2706
2706
 
2707
2707
  declare const SandboxCredentialsConfigSchema: () => z.ZodOptional<z.ZodObject<{
2708
- files: z.ZodOptional<z.ZodArray<z.ZodObject<{
2708
+ files: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
2709
2709
  path: z.ZodString;
2710
- mode: z.ZodLiteral<"deny">;
2711
- }, z.core.$strip>>>;
2712
- envVars: z.ZodOptional<z.ZodArray<z.ZodObject<{
2710
+ mode: z.ZodEnum<{
2711
+ deny: "deny";
2712
+ mask: "mask";
2713
+ }>;
2714
+ extract: z.ZodOptional<z.ZodString>;
2715
+ onExtractNoMatch: z.ZodOptional<z.ZodEnum<{
2716
+ deny: "deny";
2717
+ error: "error";
2718
+ warn: "warn";
2719
+ }>>;
2720
+ maskDuplicates: z.ZodOptional<z.ZodBoolean>;
2721
+ injectHosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
2722
+ }, z.core.$strip>>>>;
2723
+ envVars: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
2713
2724
  name: z.ZodString;
2714
2725
  mode: z.ZodEnum<{
2715
2726
  deny: "deny";
2716
2727
  mask: "mask";
2717
2728
  }>;
2718
2729
  injectHosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
2719
- }, z.core.$strip>>>;
2730
+ }, z.core.$strip>>>>;
2720
2731
  allowPlaintextInject: z.ZodOptional<z.ZodBoolean>;
2721
2732
  }, z.core.$strip>>;
2722
2733
 
@@ -2793,18 +2804,29 @@ declare const SandboxSettingsSchema: () => z.ZodObject<{
2793
2804
  disabled: z.ZodOptional<z.ZodBoolean>;
2794
2805
  }, z.core.$strip>>;
2795
2806
  credentials: z.ZodOptional<z.ZodObject<{
2796
- files: z.ZodOptional<z.ZodArray<z.ZodObject<{
2807
+ files: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
2797
2808
  path: z.ZodString;
2798
- mode: z.ZodLiteral<"deny">;
2799
- }, z.core.$strip>>>;
2800
- envVars: z.ZodOptional<z.ZodArray<z.ZodObject<{
2809
+ mode: z.ZodEnum<{
2810
+ deny: "deny";
2811
+ mask: "mask";
2812
+ }>;
2813
+ extract: z.ZodOptional<z.ZodString>;
2814
+ onExtractNoMatch: z.ZodOptional<z.ZodEnum<{
2815
+ deny: "deny";
2816
+ error: "error";
2817
+ warn: "warn";
2818
+ }>>;
2819
+ maskDuplicates: z.ZodOptional<z.ZodBoolean>;
2820
+ injectHosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
2821
+ }, z.core.$strip>>>>;
2822
+ envVars: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
2801
2823
  name: z.ZodString;
2802
2824
  mode: z.ZodEnum<{
2803
2825
  deny: "deny";
2804
2826
  mask: "mask";
2805
2827
  }>;
2806
2828
  injectHosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
2807
- }, z.core.$strip>>>;
2829
+ }, z.core.$strip>>>>;
2808
2830
  allowPlaintextInject: z.ZodOptional<z.ZodBoolean>;
2809
2831
  }, z.core.$strip>>;
2810
2832
  ignoreViolations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
@@ -2816,8 +2838,8 @@ declare const SandboxSettingsSchema: () => z.ZodObject<{
2816
2838
  command: z.ZodString;
2817
2839
  args: z.ZodOptional<z.ZodArray<z.ZodString>>;
2818
2840
  }, z.core.$strip>>;
2819
- bwrapPath: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodTransform<string, unknown>, z.ZodString>>>;
2820
- socatPath: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodTransform<string, unknown>, z.ZodString>>>;
2841
+ bwrapPath: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodString>>>;
2842
+ socatPath: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodString>>>;
2821
2843
  }, z.core.$loose>;
2822
2844
 
2823
2845
  /**
@@ -4085,13 +4107,17 @@ export declare type SDKMirrorErrorMessage = {
4085
4107
  };
4086
4108
 
4087
4109
  /**
4088
- * Emitted when the primary model ends the stream with stop_reason "refusal" and the turn is retried once on a fallback model with the swap made persistent for the session (direction: "retry"). "revert" and "sticky" are retained in the enum for SDK-consumer compat and are no longer emitted.
4110
+ * Emitted when the primary model ends the stream with stop_reason "refusal" and the turn is retried once on a fallback model (direction: "retry"). When `scope` is "session" (or absent — older CLIs), the swap is made persistent for the session; when `scope` is "local", only that subagent/side-question response came from the fallback model and the session model is unchanged. "revert" and "sticky" are retained in the enum for SDK-consumer compat and are no longer emitted.
4089
4111
  */
4090
4112
  export declare type SDKModelRefusalFallbackMessage = {
4091
4113
  type: 'system';
4092
4114
  subtype: 'model_refusal_fallback';
4093
4115
  trigger: 'refusal';
4094
4116
  direction: 'retry' | 'revert' | 'sticky';
4117
+ /**
4118
+ * 'session': the main thread fell back and the session model is swapped. 'local': a subagent / side-question (/btw) / background fork fell back — only that response came from the fallback model and the session model is unchanged. Absent from older CLIs (treat as 'session').
4119
+ */
4120
+ scope?: 'session' | 'local';
4095
4121
  original_model: string;
4096
4122
  fallback_model: string;
4097
4123
  request_id: string | null;
@@ -6174,7 +6200,7 @@ export declare interface Settings {
6174
6200
  httpProxyPort?: number;
6175
6201
  socksProxyPort?: number;
6176
6202
  /**
6177
- * [EXPERIMENTAL] Enable in-process TLS termination so the per-request filter can see HTTPS request bodies. Provide a CA cert+key, or omit both to have sandbox-runtime generate an ephemeral one for the session. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored.
6203
+ * [EXPERIMENTAL] Enable in-process TLS termination so the per-request filter can see HTTPS request bodies. Provide a CA cert+key, or omit both to have sandbox-runtime generate an ephemeral one for the session. On native Windows an ephemeral CA cannot pass the sandbox trust check, so omitting the paths uses a persistent CA managed by the sandbox runtime (set up and trusted via /sandbox install); configured paths are passed to the sandbox runtime verbatim, which rejects a bad or incomplete pair at sandbox initialization. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored.
6178
6204
  */
6179
6205
  tlsTerminate?: {
6180
6206
  caCertPath?: string;
@@ -6203,13 +6229,13 @@ export declare interface Settings {
6203
6229
  */
6204
6230
  allowManagedReadPathsOnly?: boolean;
6205
6231
  /**
6206
- * macOS and Linux/WSL only: skip filesystem isolation entirely while keeping network and seccomp isolation. Ignored on native Windows, where the sandboxed process runs as a separate user with no inherent rights, so skipping the filesystem rules would withhold every access grant rather than loosen them — filesystem isolation stays on there. Sandboxed commands get unrestricted read/write access to the host filesystem; network egress is still confined to network.allowedDomains. Intended for deployments whose goal is egress control rather than filesystem containment. Does not change Bash prompting: sandbox.autoAllowBashIfSandboxed is independent and still defaults to true, so set it to false to keep prompting for sandboxed commands. Drops the read protection from filesystem.denyRead and credentials.files for sandboxed commands, since both are enforced by the filesystem layer this turns off; credentials.envVars deny/mask is unaffected. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored. If managed settings configure sandbox.filesystem at all, or list any sandbox.credentials.files entry, only managed settings can set this: an admin who deployed filesystem restrictions must not have them switched off by a user-writable file. (sandbox.credentials.envVars does not pin it — env scrubbing is independent of the filesystem layer and survives this setting.) When unset, filesystem isolation stays on.
6232
+ * macOS and Linux/WSL only: skip filesystem isolation entirely while keeping network and seccomp isolation. Ignored on native Windows, where the sandboxed process runs as a separate user with no inherent rights, so skipping the filesystem rules would withhold every access grant rather than loosen them — filesystem isolation stays on there. Sandboxed commands get unrestricted read/write access to the host filesystem; network egress is still confined to network.allowedDomains. Intended for deployments whose goal is egress control rather than filesystem containment. Does not change Bash prompting: sandbox.autoAllowBashIfSandboxed is independent and still defaults to true, so set it to false to keep prompting for sandboxed commands. Drops the read protection from filesystem.denyRead and credentials.files deny entries for sandboxed commands, since both are enforced by the filesystem layer this turns off; credentials.files mask entries (sentinel binds) and credentials.envVars deny/mask are unaffected. Only honored from user, managed/policy, or CLI (`--settings`) settings — project settings (.claude/settings.json and .claude/settings.local.json) are ignored. If managed settings configure sandbox.filesystem at all, or list any sandbox.credentials.files deny entry, only managed settings can set this: an admin who deployed filesystem restrictions must not have them switched off by a user-writable file. (sandbox.credentials.envVars and credentials.files mask entries do not pin it — env scrubbing and sentinel binds are independent of the filesystem layer and survive this setting.) When unset, filesystem isolation stays on.
6207
6233
  */
6208
6234
  disabled?: boolean;
6209
6235
  };
6210
6236
  credentials?: {
6211
6237
  /**
6212
- * Credential files or directories to protect. `deny` blocks reads inside the sandbox.
6238
+ * Credential files or directories to protect. `deny` blocks reads inside the sandbox; `mask` substitutes a sentinel inside the sandbox (whole-file, or per-`extract` capture) and injects the real value at the proxy. On macOS and Windows `mask` degrades to `deny`.
6213
6239
  */
6214
6240
  files?: {
6215
6241
  /**
@@ -6217,9 +6243,25 @@ export declare interface Settings {
6217
6243
  */
6218
6244
  path: string;
6219
6245
  /**
6220
- * Access mode for this path. Only `deny` is supported.
6246
+ * Access mode for this path. `deny` blocks reads inside the sandbox; `mask` shows sandboxed commands a sentinel-substituted copy (whole-file, or only the spans captured by `extract`) and the host proxy swaps sentinel→real on egress to `injectHosts`. On macOS and Windows `mask` currently degrades to `deny`.
6247
+ */
6248
+ mode: 'deny' | 'mask';
6249
+ /**
6250
+ * Optional regex for structured masking when mode is `mask`. Applied globally to the file; capture group 1 of each match is a credential value, and only those captured spans are replaced with sentinels — the rest of the file is preserved so a tool that parses it (.netrc, JSON, YAML) still succeeds. Without `extract`, the entire file content is replaced with one sentinel (whole-file masking, suited to single-secret files). If the regex matches nothing, behavior is governed by `onExtractNoMatch` (default `warn`). Accepted but ignored for `deny`.
6251
+ */
6252
+ extract?: string;
6253
+ /**
6254
+ * What to do when `extract` matches nothing in the file. `warn` (default) emits a stderr warning and leaves the file readable as-is inside the sandbox (fail-open, for credentials that may be legitimately absent); `deny` degrades the entry to mode `deny` so the file is unreadable (fail-closed) — under `sandbox.filesystem.disabled` it is treated as `error`, since read-denies are dropped in that mode; `error` aborts at sandbox setup so nothing runs until the config is fixed. Only meaningful when mode is `mask` and `extract` is set; accepted but ignored otherwise.
6221
6255
  */
6222
- mode: 'deny';
6256
+ onExtractNoMatch?: 'warn' | 'deny' | 'error';
6257
+ /**
6258
+ * If true, verbatim occurrences of each captured credential value outside the regex-matched spans are also replaced with the corresponding sentinel — for a secret repeated where the regex does not reach (e.g. pasted into a comment). Matches raw substrings, so short or common values may corrupt unrelated content; intended for long, high-entropy secrets. Defaults to false. Only meaningful when mode is `mask` and `extract` is set; accepted but ignored otherwise.
6259
+ */
6260
+ maskDuplicates?: boolean;
6261
+ /**
6262
+ * Optional narrowing of where the proxy substitutes this credential. Only meaningful when mode is `mask`; accepted but ignored for `deny`. If unset, defaults to `network.allowedDomains` — the credential is injected at every reachable host. Each entry must be reachable via `network.allowedDomains` (sandbox-runtime validates this).
6263
+ */
6264
+ injectHosts?: string[];
6223
6265
  }[];
6224
6266
  /**
6225
6267
  * Environment variables to protect. `deny` unsets the variable for sandboxed commands; `mask` substitutes a sentinel inside the sandbox and injects the real value at the proxy.
@@ -7022,7 +7064,7 @@ export declare interface Transport {
7022
7064
  *
7023
7065
  * @alpha
7024
7066
  */
7025
- export declare const USAGE_LIMIT_ERROR_PREFIXES: readonly ["You've hit your", "You've reached your", "You're out of usage credits", "Your org is out of usage · add funds to continue", "Your org is out of usage · contact your admin", "Your seat type doesn't include usage credits", "Your seat type doesn't include usage", "Your usage allocation has been disabled by your admin", "Your group's usage limit is set to $0", "Fable 5 requires usage credits", "You're out of extra usage", "Your seat type doesn't include extra usage"];
7067
+ export declare const USAGE_LIMIT_ERROR_PREFIXES: readonly ["You've hit your", "You've reached your", "You're out of usage credits", 'Your org is out of usage · add funds to continue', 'Your org is out of usage · contact your admin', "Your seat type doesn't include usage credits", "Your seat type doesn't include usage", 'Your usage allocation has been disabled by your admin', "Your group's usage limit is set to $0", 'Fable 5 requires usage credits', "You're out of extra usage", "Your seat type doesn't include extra usage"];
7026
7068
 
7027
7069
  /**
7028
7070
  * Overage-transition notifications ("now drawing from credits"). Toast only;
@@ -7030,7 +7072,7 @@ export declare const USAGE_LIMIT_ERROR_PREFIXES: readonly ["You've hit your", "Y
7030
7072
  *
7031
7073
  * @alpha
7032
7074
  */
7033
- export declare const USAGE_TRANSITION_PREFIXES: readonly ["You're now using usage credits", "You're now using your usage allocation", "Now using your usage allocation", "Now using usage credits", "You're now using extra usage", "Now using extra usage"];
7075
+ export declare const USAGE_TRANSITION_PREFIXES: readonly ["You're now using usage credits", "You're now using your usage allocation", 'Now using your usage allocation', 'Now using usage credits', "You're now using extra usage", 'Now using extra usage'];
7034
7076
 
7035
7077
  /**
7036
7078
  * Approaching-limit warnings (severity:'warning'). Footer/toast only; these