@schemastore/claude-code-settings 1.0.0

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.
Files changed (4) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +14 -0
  3. package/index.d.ts +969 -0
  4. package/package.json +9 -0
package/index.d.ts ADDED
@@ -0,0 +1,969 @@
1
+ /* eslint-disable */
2
+
3
+ /**
4
+ * Tool permission rule.
5
+ * See https://code.claude.com/docs/en/settings#permission-rule-syntax
6
+ * See https://code.claude.com/docs/en/settings#tools-available-to-claude for full list of tools available to Claude.
7
+ */
8
+ export type PermissionRule = string;
9
+ export type HookCommand =
10
+ | {
11
+ /**
12
+ * Hook type
13
+ */
14
+ type: 'command';
15
+ /**
16
+ * Shell command to execute
17
+ */
18
+ command: string;
19
+ /**
20
+ * Optional timeout in seconds
21
+ */
22
+ timeout?: number;
23
+ /**
24
+ * Run this hook asynchronously without blocking Claude Code
25
+ */
26
+ async?: boolean;
27
+ /**
28
+ * Custom spinner message displayed while the hook runs
29
+ */
30
+ statusMessage?: string;
31
+ }
32
+ | {
33
+ /**
34
+ * Hook type
35
+ */
36
+ type: 'prompt';
37
+ /**
38
+ * Prompt to evaluate with LLM. Use $ARGUMENTS placeholder for hook input JSON.
39
+ */
40
+ prompt: string;
41
+ /**
42
+ * Model to use for evaluation. Defaults to a fast model
43
+ */
44
+ model?: string;
45
+ /**
46
+ * Optional timeout in seconds (default: 30)
47
+ */
48
+ timeout?: number;
49
+ /**
50
+ * Custom spinner message displayed while the hook runs
51
+ */
52
+ statusMessage?: string;
53
+ }
54
+ | {
55
+ /**
56
+ * Hook type
57
+ */
58
+ type: 'agent';
59
+ /**
60
+ * Prompt describing what to verify. Use $ARGUMENTS placeholder for hook input JSON.
61
+ */
62
+ prompt: string;
63
+ /**
64
+ * Model to use for evaluation. Defaults to a fast model
65
+ */
66
+ model?: string;
67
+ /**
68
+ * Optional timeout in seconds (default: 60)
69
+ */
70
+ timeout?: number;
71
+ /**
72
+ * Custom spinner message displayed while the hook runs
73
+ */
74
+ statusMessage?: string;
75
+ }
76
+ | {
77
+ /**
78
+ * Hook type
79
+ */
80
+ type: 'http';
81
+ /**
82
+ * URL to POST hook input JSON to. Endpoint must accept POST requests and return JSON.
83
+ */
84
+ url: string;
85
+ /**
86
+ * Custom HTTP headers (e.g., Authorization: Bearer token). Values support $VAR_NAME or ${VAR_NAME} interpolation.
87
+ */
88
+ headers?: {
89
+ [k: string]: string | undefined;
90
+ };
91
+ /**
92
+ * List of environment variable names permitted for interpolation in headers. If not set, no env var interpolation is allowed.
93
+ */
94
+ allowedEnvVars?: string[];
95
+ /**
96
+ * Optional timeout in seconds (default: 30)
97
+ */
98
+ timeout?: number;
99
+ /**
100
+ * Custom spinner message displayed while the hook runs
101
+ */
102
+ statusMessage?: string;
103
+ };
104
+
105
+ /**
106
+ * Configuration settings for Claude Code. Learn more: https://code.claude.com/docs/en/settings
107
+ */
108
+ export interface ClaudeCodeSettings {
109
+ /**
110
+ * JSON Schema reference for Claude Code settings
111
+ */
112
+ $schema?: string;
113
+ /**
114
+ * Path to a script that outputs authentication values
115
+ */
116
+ apiKeyHelper?: string;
117
+ /**
118
+ * Enable automatic memory saves that capture useful context to .claude/memory/. Also configurable via CLAUDE_CODE_DISABLE_AUTO_MEMORY environment variable (set to 1 to disable, 0 to enable). See https://code.claude.com/docs/en/memory#auto-memory
119
+ */
120
+ autoMemoryEnabled?: boolean;
121
+ /**
122
+ * Release channel to follow for updates. Use "stable" for a version that is typically about one week old and skips versions with major regressions, or "latest" (default) for the most recent release. Set DISABLE_AUTOUPDATER=1 to disable updates entirely.
123
+ */
124
+ autoUpdatesChannel?: 'stable' | 'latest';
125
+ /**
126
+ * Path to a script that exports AWS credentials
127
+ */
128
+ awsCredentialExport?: string;
129
+ /**
130
+ * Path to a script that refreshes AWS authentication
131
+ */
132
+ awsAuthRefresh?: string;
133
+ /**
134
+ * Number of days to retain chat transcripts (0 to disable cleanup)
135
+ */
136
+ cleanupPeriodDays?: number;
137
+ /**
138
+ * Environment variables to set for Claude Code sessions. Many environment variables provide settings dimensions not available as dedicated settings.json properties (e.g., thinking tokens, prompt caching, bash timeouts, shell configuration). See https://code.claude.com/docs/en/settings#environment-variables for the full list.
139
+ * UNDOCUMENTED: CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS (plugin marketplace git timeout in ms, default 120000, see https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2151).
140
+ * UNDOCUMENTED: ENABLE_CLAUDEAI_MCP_SERVERS (set to false to opt out of claude.ai MCP servers, see https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md#2163).
141
+ */
142
+ env?: {
143
+ /**
144
+ * Environment variable value
145
+ *
146
+ * This interface was referenced by `undefined`'s JSON-Schema definition
147
+ * via the `patternProperty` "^[A-Z_][A-Z0-9_]*$".
148
+ */
149
+ [k: string]: string;
150
+ };
151
+ /**
152
+ * Customize attribution for git commits and pull requests. See https://code.claude.com/docs/en/settings#attribution-settings
153
+ */
154
+ attribution?: {
155
+ /**
156
+ * Attribution for git commits, including any trailers. Empty string hides commit attribution
157
+ */
158
+ commit?: string;
159
+ /**
160
+ * Attribution for pull request descriptions. Empty string hides pull request attribution
161
+ */
162
+ pr?: string;
163
+ };
164
+ /**
165
+ * Include built-in git commit and PR workflow instructions in Claude's system prompt. Also configurable via CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS environment variable (set to 1 to disable). See https://code.claude.com/docs/en/settings#available-settings
166
+ */
167
+ includeGitInstructions?: boolean;
168
+ /**
169
+ * DEPRECATED. Use 'attribution' instead. Whether to include the co-authored-by Claude byline in git commits and pull requests (default: true)
170
+ */
171
+ includeCoAuthoredBy?: boolean;
172
+ /**
173
+ * Customize where plan files are stored. Path is relative to project root (default: ~/.claude/plans)
174
+ */
175
+ plansDirectory?: string;
176
+ /**
177
+ * Control whether the @ file picker respects .gitignore patterns. When true (default), files matching .gitignore patterns are excluded from suggestions
178
+ */
179
+ respectGitignore?: boolean;
180
+ /**
181
+ * Tool usage permissions configuration.
182
+ * See https://code.claude.com/docs/en/permissions and https://code.claude.com/docs/en/settings#permission-settings
183
+ * See https://code.claude.com/docs/en/settings#tools-available-to-claude for full list of tools available to Claude.
184
+ */
185
+ permissions?: {
186
+ /**
187
+ * List of permission rules for allowed operations
188
+ */
189
+ allow?: PermissionRule[];
190
+ /**
191
+ * List of permission rules for denied operations
192
+ */
193
+ deny?: PermissionRule[];
194
+ /**
195
+ * List of permission rules that should always prompt for confirmation
196
+ */
197
+ ask?: PermissionRule[];
198
+ /**
199
+ * Default permission mode.
200
+ * "default": prompts on first use.
201
+ * "acceptEdits": auto-accepts file edits.
202
+ * "plan": read-only, no modifications.
203
+ * UNDOCUMENTED. "delegate": coordination-only for agent team leads (agent teams are experimental; enable via CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS).
204
+ * "dontAsk": auto-denies unless pre-approved via permissions.
205
+ * "bypassPermissions": skips all prompts (use only in isolated environments).
206
+ * See https://code.claude.com/docs/en/permissions
207
+ */
208
+ defaultMode?: 'acceptEdits' | 'bypassPermissions' | 'default' | 'delegate' | 'dontAsk' | 'plan';
209
+ /**
210
+ * Disable the ability to bypass permission prompts
211
+ */
212
+ disableBypassPermissionsMode?: 'disable';
213
+ /**
214
+ * Additional directories to include in the permission scope
215
+ */
216
+ additionalDirectories?: string[];
217
+ };
218
+ /**
219
+ * Preferred language for Claude's responses
220
+ */
221
+ language?: string;
222
+ /**
223
+ * Override the default model used by Claude Code. For finer control, use environment variables: ANTHROPIC_MODEL (runtime override), ANTHROPIC_DEFAULT_OPUS_MODEL, ANTHROPIC_DEFAULT_SONNET_MODEL, ANTHROPIC_DEFAULT_HAIKU_MODEL (per-class pinning), CLAUDE_CODE_SUBAGENT_MODEL (subagent model). See https://code.claude.com/docs/en/model-config
224
+ */
225
+ model?: string;
226
+ /**
227
+ * Restrict which models users can select. When defined at multiple settings levels (user, project, etc.), arrays are merged and deduplicated. See https://code.claude.com/docs/en/model-config#restrict-model-selection
228
+ */
229
+ availableModels?: string[];
230
+ /**
231
+ * Control Opus 4.6 adaptive reasoning effort. Lower effort is faster and cheaper for straightforward tasks, higher effort provides deeper reasoning. Opus 4.6 defaults to medium effort for Max and Team subscribers. Also configurable via CLAUDE_CODE_EFFORT_LEVEL environment variable. See https://code.claude.com/docs/en/model-config#adjust-effort-level
232
+ */
233
+ effortLevel?: 'low' | 'medium' | 'high';
234
+ /**
235
+ * Enable fast mode for Opus 4.6 (research preview). Fast mode uses the same model with 2.5x faster output at higher per-token cost. Requires extra usage enabled. Alternatively, toggle with /fast command. See https://code.claude.com/docs/en/fast-mode
236
+ */
237
+ fastMode?: boolean;
238
+ /**
239
+ * Require per-session opt-in for fast mode. When true, fast mode does not persist across sessions and users must enable it with /fast each session. Useful for controlling costs. See https://code.claude.com/docs/en/fast-mode
240
+ */
241
+ fastModePerSessionOptIn?: boolean;
242
+ /**
243
+ * Whether to automatically approve all MCP servers in the project. See https://code.claude.com/docs/en/mcp
244
+ */
245
+ enableAllProjectMcpServers?: boolean;
246
+ /**
247
+ * List of approved MCP servers from .mcp.json. See https://code.claude.com/docs/en/mcp
248
+ */
249
+ enabledMcpjsonServers?: string[];
250
+ /**
251
+ * List of rejected MCP servers from .mcp.json. See https://code.claude.com/docs/en/mcp
252
+ */
253
+ disabledMcpjsonServers?: string[];
254
+ /**
255
+ * Enterprise allowlist of MCP servers that can be used. Applies to all scopes including enterprise servers from managed-mcp.json. If undefined, all servers are allowed. If empty array, no servers are allowed. Denylist takes precedence - if a server is on both lists, it is denied. See https://code.claude.com/docs/en/mcp#restriction-options
256
+ */
257
+ allowedMcpServers?: (
258
+ | {
259
+ /**
260
+ * Name of the MCP server that users are allowed to configure
261
+ */
262
+ serverName: string;
263
+ }
264
+ | {
265
+ /**
266
+ * Exact command and arguments used to start stdio servers
267
+ */
268
+ serverCommand: string[];
269
+ }
270
+ | {
271
+ /**
272
+ * URL pattern for remote servers, supports wildcards (e.g., https://*.example.com/*)
273
+ */
274
+ serverUrl: string;
275
+ }
276
+ )[];
277
+ /**
278
+ * Enterprise denylist of MCP servers that are explicitly blocked. If a server is on the denylist, it will be blocked across all scopes including enterprise. Denylist takes precedence over allowlist - if a server is on both lists, it is denied. See https://code.claude.com/docs/en/mcp#restriction-options
279
+ */
280
+ deniedMcpServers?: (
281
+ | {
282
+ /**
283
+ * Name of the MCP server that is explicitly blocked
284
+ */
285
+ serverName: string;
286
+ }
287
+ | {
288
+ /**
289
+ * Exact command and arguments used to start stdio servers
290
+ */
291
+ serverCommand: string[];
292
+ }
293
+ | {
294
+ /**
295
+ * URL pattern for remote servers, supports wildcards (e.g., https://*.example.com/*)
296
+ */
297
+ serverUrl: string;
298
+ }
299
+ )[];
300
+ /**
301
+ * Custom commands to run before/after tool executions. See https://code.claude.com/docs/en/hooks
302
+ */
303
+ hooks?: {
304
+ /**
305
+ * Hooks that run before tool calls
306
+ */
307
+ PreToolUse?: HookMatcher[];
308
+ /**
309
+ * Hooks that run after tool completion
310
+ */
311
+ PostToolUse?: HookMatcher[];
312
+ /**
313
+ * Hooks that run after a tool fails
314
+ */
315
+ PostToolUseFailure?: HookMatcher[];
316
+ /**
317
+ * Hooks that run when a permission dialog appears
318
+ */
319
+ PermissionRequest?: HookMatcher[];
320
+ /**
321
+ * Hooks that trigger on notifications
322
+ */
323
+ Notification?: HookMatcher[];
324
+ /**
325
+ * Hooks that run when a user submits a prompt
326
+ */
327
+ UserPromptSubmit?: HookMatcher[];
328
+ /**
329
+ * Hooks that run when agents finish responding. Does not run on user interrupt
330
+ */
331
+ Stop?: HookMatcher[];
332
+ /**
333
+ * Hooks that run when a subagent is spawned
334
+ */
335
+ SubagentStart?: HookMatcher[];
336
+ /**
337
+ * Hooks that run when subagents finish responding
338
+ */
339
+ SubagentStop?: HookMatcher[];
340
+ /**
341
+ * Hooks that run before the context is compacted
342
+ */
343
+ PreCompact?: HookMatcher[];
344
+ /**
345
+ * Hooks that run when an agent team teammate is about to go idle. Exit code 2 sends feedback and keeps the teammate working. Does not support matchers. Agent teams are experimental. See https://code.claude.com/docs/en/hooks#teammateidle
346
+ */
347
+ TeammateIdle?: HookMatcher[];
348
+ /**
349
+ * Hooks that run when a task is being marked as completed. Exit code 2 prevents completion and sends feedback. Does not support matchers. See https://code.claude.com/docs/en/hooks#taskcompleted
350
+ */
351
+ TaskCompleted?: HookMatcher[];
352
+ /**
353
+ * UNDOCUMENTED. Hooks that run during repository initialization (--init, --init-only) or maintenance (--maintenance)
354
+ */
355
+ Setup?: HookMatcher[];
356
+ /**
357
+ * Hooks that run when a CLAUDE.md or .claude/rules/*.md file is loaded into context. Fires at session start and when files are lazily loaded (e.g., nested traversal, path glob match). No decision control; used for audit logging and observability. Does not support matchers. See https://code.claude.com/docs/en/hooks#instructionsloaded
358
+ */
359
+ InstructionsLoaded?: HookMatcher[];
360
+ /**
361
+ * Hooks that run when settings, managed settings, or skill files change during a session. Supports matchers: user_settings, project_settings, local_settings, policy_settings, skills. Command handlers only. Exit code 2 blocks the change (except policy_settings which is audit-only). See https://code.claude.com/docs/en/hooks#configchange
362
+ */
363
+ ConfigChange?: HookMatcher[];
364
+ /**
365
+ * Hooks that run when a worktree is created via --worktree or isolation: "worktree" in subagents. Command handlers only, no matchers. Hook must print absolute path to created worktree on stdout; non-zero exit fails creation. See https://code.claude.com/docs/en/hooks#worktreecreate
366
+ */
367
+ WorktreeCreate?: HookMatcher[];
368
+ /**
369
+ * Hooks that run when a worktree is being removed at session exit or when a subagent finishes. Command handlers only, no matchers. Used for cleanup tasks; cannot block removal. See https://code.claude.com/docs/en/hooks#worktreeremove
370
+ */
371
+ WorktreeRemove?: HookMatcher[];
372
+ /**
373
+ * Hooks that run when a new session starts
374
+ */
375
+ SessionStart?: HookMatcher[];
376
+ /**
377
+ * Hooks that run when a session ends
378
+ */
379
+ SessionEnd?: HookMatcher[];
380
+ };
381
+ /**
382
+ * Disable all hooks and statusLine execution. When true in managed settings, user and project-level disableAllHooks cannot override it. See https://code.claude.com/docs/en/hooks#disable-or-remove-hooks
383
+ */
384
+ disableAllHooks?: boolean;
385
+ /**
386
+ * (Managed settings only) Prevent loading of user, project, and plugin hooks. Only allows managed hooks and SDK hooks. See https://code.claude.com/docs/en/settings#hook-configuration
387
+ */
388
+ allowManagedHooksOnly?: boolean;
389
+ /**
390
+ * (Managed settings only) Prevent user and project settings from defining allow, ask, or deny permission rules. Only rules in managed settings apply. See https://code.claude.com/docs/en/settings#permission-settings
391
+ */
392
+ allowManagedPermissionRulesOnly?: boolean;
393
+ /**
394
+ * Custom status line display configuration. See https://code.claude.com/docs/en/statusline
395
+ */
396
+ statusLine?: {
397
+ /**
398
+ * The type of status line handler; must be set to "command" to run a custom shell script that receives JSON session data via stdin.
399
+ */
400
+ type: 'command';
401
+ /**
402
+ * A shell command or path to a script that displays session information (context usage, costs, git status, etc.) by reading JSON data from stdin and writing output to stdout. See https://code.claude.com/docs/en/statusline
403
+ */
404
+ command: string;
405
+ /**
406
+ * Optional number of extra horizontal spacing characters added to the status line content; defaults to 0.
407
+ */
408
+ padding?: number;
409
+ };
410
+ /**
411
+ * Configure a custom script for @ file autocomplete. See https://code.claude.com/docs/en/settings#file-suggestion-settings
412
+ */
413
+ fileSuggestion?: {
414
+ /**
415
+ * The type of file suggestion handler; must be set to "command" to execute a custom shell script that generates file suggestions for the @ file picker.
416
+ */
417
+ type: 'command';
418
+ /**
419
+ * Shell command to execute for file suggestions
420
+ */
421
+ command: string;
422
+ };
423
+ /**
424
+ * Enabled plugins using plugin-id@marketplace-id format. Example: { "formatter@anthropic-tools": true }. See https://code.claude.com/docs/en/plugins
425
+ */
426
+ enabledPlugins?: {
427
+ [k: string]:
428
+ | (
429
+ | string[]
430
+ | boolean
431
+ | {
432
+ [k: string]: unknown | undefined;
433
+ }
434
+ )
435
+ | undefined;
436
+ };
437
+ /**
438
+ * Additional marketplaces to make available for this repository. Typically used in repository .claude/settings.json to ensure team members have required plugin sources. See https://code.claude.com/docs/en/plugin-marketplaces
439
+ */
440
+ extraKnownMarketplaces?: {
441
+ [k: string]:
442
+ | {
443
+ /**
444
+ * Where to fetch the marketplace from
445
+ */
446
+ source:
447
+ | {
448
+ /**
449
+ * Identifies the marketplace source type
450
+ */
451
+ source: 'url';
452
+ /**
453
+ * Direct URL to marketplace.json file
454
+ */
455
+ url: string;
456
+ }
457
+ | {
458
+ /**
459
+ * Identifies the marketplace source type
460
+ */
461
+ source: 'hostPattern';
462
+ /**
463
+ * Git host pattern to trust for repositories in source specifications
464
+ */
465
+ hostPattern: string;
466
+ }
467
+ | {
468
+ /**
469
+ * Identifies the marketplace source type
470
+ */
471
+ source: 'github';
472
+ /**
473
+ * GitHub repository in owner/repo format
474
+ */
475
+ repo: string;
476
+ /**
477
+ * Git branch or tag to use (e.g., "main", "v1.0.0"). Defaults to repository default branch.
478
+ */
479
+ ref?: string;
480
+ /**
481
+ * Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)
482
+ */
483
+ path?: string;
484
+ }
485
+ | {
486
+ /**
487
+ * Identifies the marketplace source type
488
+ */
489
+ source: 'git';
490
+ /**
491
+ * Full git repository URL
492
+ */
493
+ url: string;
494
+ /**
495
+ * Git branch or tag to use (e.g., "main", "v1.0.0"). Defaults to repository default branch.
496
+ */
497
+ ref?: string;
498
+ /**
499
+ * Path to marketplace.json within repo (defaults to .claude-plugin/marketplace.json)
500
+ */
501
+ path?: string;
502
+ }
503
+ | {
504
+ /**
505
+ * Identifies the marketplace source type
506
+ */
507
+ source: 'npm';
508
+ /**
509
+ * NPM package containing marketplace.json
510
+ */
511
+ package: string;
512
+ }
513
+ | {
514
+ /**
515
+ * Identifies the marketplace source type
516
+ */
517
+ source: 'file';
518
+ /**
519
+ * Local file path to marketplace.json
520
+ */
521
+ path: string;
522
+ }
523
+ | {
524
+ /**
525
+ * Identifies the marketplace source type
526
+ */
527
+ source: 'directory';
528
+ /**
529
+ * Local directory containing .claude-plugin/marketplace.json
530
+ */
531
+ path: string;
532
+ };
533
+ /**
534
+ * Local cache path where marketplace manifest is stored (auto-generated if not provided)
535
+ */
536
+ installLocation?: string;
537
+ }
538
+ | undefined;
539
+ };
540
+ /**
541
+ * (Managed settings only) Allowlist of plugin marketplaces users can add. Undefined = no restrictions, empty array = lockdown. Uses exact matching for source specifications. See https://code.claude.com/docs/en/settings#strictknownmarketplaces
542
+ */
543
+ strictKnownMarketplaces?: (
544
+ | {
545
+ /**
546
+ * Identifies the marketplace source type
547
+ */
548
+ source: 'hostPattern';
549
+ /**
550
+ * Git host pattern to trust for repositories in source specifications
551
+ */
552
+ hostPattern: string;
553
+ }
554
+ | {
555
+ /**
556
+ * Identifies the marketplace source type
557
+ */
558
+ source: 'github';
559
+ /**
560
+ * GitHub repository in owner/repo format
561
+ */
562
+ repo: string;
563
+ /**
564
+ * Git branch, tag, or SHA
565
+ */
566
+ ref?: string;
567
+ /**
568
+ * Subdirectory path
569
+ */
570
+ path?: string;
571
+ }
572
+ | {
573
+ /**
574
+ * Identifies the marketplace source type
575
+ */
576
+ source: 'git';
577
+ /**
578
+ * Full git repository URL
579
+ */
580
+ url: string;
581
+ /**
582
+ * Git branch, tag, or SHA
583
+ */
584
+ ref?: string;
585
+ /**
586
+ * Subdirectory path
587
+ */
588
+ path?: string;
589
+ }
590
+ | {
591
+ /**
592
+ * Identifies the marketplace source type
593
+ */
594
+ source: 'url';
595
+ /**
596
+ * Direct URL to marketplace.json
597
+ */
598
+ url: string;
599
+ /**
600
+ * HTTP headers for authenticated access
601
+ */
602
+ headers?: {
603
+ [k: string]: string | undefined;
604
+ };
605
+ }
606
+ | {
607
+ /**
608
+ * Identifies the marketplace source type
609
+ */
610
+ source: 'npm';
611
+ /**
612
+ * NPM package name (supports scoped packages)
613
+ */
614
+ package: string;
615
+ }
616
+ | {
617
+ /**
618
+ * Identifies the marketplace source type
619
+ */
620
+ source: 'file';
621
+ /**
622
+ * Absolute path to marketplace.json file
623
+ */
624
+ path: string;
625
+ }
626
+ | {
627
+ /**
628
+ * Identifies the marketplace source type
629
+ */
630
+ source: 'directory';
631
+ /**
632
+ * Absolute path to directory containing .claude-plugin/marketplace.json
633
+ */
634
+ path: string;
635
+ }
636
+ | {
637
+ /**
638
+ * Identifies the marketplace source type
639
+ */
640
+ source: 'pathPattern';
641
+ /**
642
+ * Regex pattern to match file or directory paths for marketplace sources
643
+ */
644
+ pathPattern: string;
645
+ }
646
+ )[];
647
+ /**
648
+ * List of marketplace names the user has chosen not to install when prompted
649
+ */
650
+ skippedMarketplaces?: string[];
651
+ /**
652
+ * List of plugin IDs (plugin@marketplace format) the user has chosen not to install when prompted
653
+ */
654
+ skippedPlugins?: string[];
655
+ /**
656
+ * Force a specific login method: "claudeai" for Claude Pro/Max, "console" for Console billing
657
+ */
658
+ forceLoginMethod?: 'claudeai' | 'console';
659
+ /**
660
+ * Organization UUID to use for OAuth login
661
+ */
662
+ forceLoginOrgUUID?: string;
663
+ /**
664
+ * Path to a script that outputs OpenTelemetry headers
665
+ */
666
+ otelHeadersHelper?: string;
667
+ /**
668
+ * Controls the output style for assistant responses. See https://code.claude.com/docs/en/output-styles
669
+ */
670
+ outputStyle?: string;
671
+ /**
672
+ * Skip the WebFetch blocklist check for enterprise environments with restrictive security policies
673
+ */
674
+ skipWebFetchPreflight?: boolean;
675
+ /**
676
+ * Sandbox execution configuration. See https://code.claude.com/docs/en/sandboxing
677
+ */
678
+ sandbox?: {
679
+ /**
680
+ * Configures network isolation settings for the sandboxed bash environment, including domain restrictions, Unix socket access, and custom proxy configuration.
681
+ */
682
+ network?: {
683
+ /**
684
+ * Allow Unix domain sockets for local IPC (SSH agent, Docker, etc.). Provide an array of specific paths. Defaults to blocking if not specified
685
+ */
686
+ allowUnixSockets?: string[];
687
+ /**
688
+ * Allow binding to local network addresses (e.g., localhost ports). Defaults to false if not specified
689
+ */
690
+ allowLocalBinding?: boolean;
691
+ /**
692
+ * HTTP proxy port to use for network filtering. If not specified, a proxy server will be started automatically
693
+ */
694
+ httpProxyPort?: number;
695
+ /**
696
+ * SOCKS proxy port to use for network filtering. If not specified, a proxy server will be started automatically
697
+ */
698
+ socksProxyPort?: number;
699
+ /**
700
+ * Allow all Unix domain socket connections. If true, this overrides allowUnixSockets
701
+ */
702
+ allowAllUnixSockets?: boolean;
703
+ /**
704
+ * Allowlist of network domains for sandboxed commands. Supports wildcard patterns like *.example.com
705
+ */
706
+ allowedDomains?: string[];
707
+ /**
708
+ * (Managed settings only) Only allowedDomains and WebFetch(domain:...) allow rules from managed settings are respected. User, project, local, and flag settings domains are ignored. Denied domains are still respected from all sources.
709
+ */
710
+ allowManagedDomainsOnly?: boolean;
711
+ };
712
+ /**
713
+ * Map of command patterns to filesystem paths to ignore violations for. Use "*" to match all commands
714
+ */
715
+ ignoreViolations?: {
716
+ /**
717
+ * List of filesystem paths to ignore sandbox violations for when this command pattern matches
718
+ */
719
+ [k: string]: string[] | undefined;
720
+ };
721
+ /**
722
+ * Commands that should never run in the sandbox (e.g., ["git", "docker"])
723
+ */
724
+ excludedCommands?: string[];
725
+ /**
726
+ * Automatically allow bash commands without prompting when they run in the sandbox. Only applies to commands that will run sandboxed.
727
+ */
728
+ autoAllowBashIfSandboxed?: boolean;
729
+ /**
730
+ * macOS only. Allow access to the system TLS trust service (com.apple.trustd.agent) in the sandbox. Required for Go-based tools like gh, gcloud, and terraform to verify TLS certificates when using httpProxyPort with a MITM proxy and custom CA. Reduces security by opening a potential data exfiltration path. Default: false. See https://code.claude.com/docs/en/settings#sandbox-settings
731
+ */
732
+ enableWeakerNetworkIsolation?: boolean;
733
+ /**
734
+ * Enable weaker sandbox mode for unprivileged docker environments where --proc mounting fails. This significantly reduces the strength of the sandbox and should only be used when this risk is acceptable.Default: false (secure).
735
+ */
736
+ enableWeakerNestedSandbox?: boolean;
737
+ /**
738
+ * Allow commands to run outside the sandbox via the dangerouslyDisableSandbox parameter. When false, the dangerouslyDisableSandbox parameter is completely ignored and all commands must run sandboxed. Default: true.
739
+ */
740
+ allowUnsandboxedCommands?: boolean;
741
+ /**
742
+ * Enable sandboxed bash
743
+ */
744
+ enabled?: boolean;
745
+ /**
746
+ * Filesystem access control for sandboxed commands. See https://code.claude.com/docs/en/sandboxing#filesystem-isolation
747
+ */
748
+ filesystem?: {
749
+ /**
750
+ * Paths where subprocesses are allowed to write. Supports prefixes: // (absolute), ~/ (home directory), / (relative to settings file), ./ or no prefix (relative path)
751
+ */
752
+ allowWrite?: string[];
753
+ /**
754
+ * Paths where subprocesses are explicitly denied write access. Takes precedence over allowWrite
755
+ */
756
+ denyWrite?: string[];
757
+ /**
758
+ * Paths where subprocesses are explicitly denied read access
759
+ */
760
+ denyRead?: string[];
761
+ };
762
+ };
763
+ /**
764
+ * Customize the verbs shown in spinner progress messages
765
+ */
766
+ spinnerVerbs?: {
767
+ /**
768
+ * How to combine custom verbs with default spinner verbs: 'append' adds custom verbs to the default list, 'replace' uses only custom verbs
769
+ */
770
+ mode?: 'append' | 'replace';
771
+ /**
772
+ * Custom verbs used in spinner progress text
773
+ *
774
+ * @minItems 1
775
+ */
776
+ verbs: [string, ...string[]];
777
+ };
778
+ /**
779
+ * Show tips in the spinner while Claude is working. Set to false to disable tips (default: true)
780
+ */
781
+ spinnerTipsEnabled?: boolean;
782
+ /**
783
+ * Customize the tips displayed in the spinner while Claude is working. See https://code.claude.com/docs/en/settings#available-settings
784
+ */
785
+ spinnerTipsOverride?: {
786
+ /**
787
+ * If true, only show custom tips. If false or absent, custom tips merge with built-in tips
788
+ */
789
+ excludeDefault?: boolean;
790
+ /**
791
+ * Custom tip strings to display in the spinner
792
+ *
793
+ * @minItems 1
794
+ */
795
+ tips: [string, ...string[]];
796
+ };
797
+ /**
798
+ * Enable the terminal progress bar that shows progress in supported terminals like Windows Terminal and iTerm2 (default: true)
799
+ */
800
+ terminalProgressBarEnabled?: boolean;
801
+ /**
802
+ * Show turn duration messages after responses (e.g., "Cooked for 1m 6s"). Set to false to hide these messages (default: true)
803
+ */
804
+ showTurnDuration?: boolean;
805
+ /**
806
+ * Reduce or disable UI animations (spinners, shimmer, flash effects) for accessibility
807
+ */
808
+ prefersReducedMotion?: boolean;
809
+ /**
810
+ * Enable extended thinking by default for all sessions. Typically configured via the /config command rather than editing directly. See https://code.claude.com/docs/en/common-workflows#use-extended-thinking-thinking-mode
811
+ */
812
+ alwaysThinkingEnabled?: boolean;
813
+ /**
814
+ * Company announcements to display at startup (one will be randomly selected if multiple are provided)
815
+ */
816
+ companyAnnouncements?: string[];
817
+ /**
818
+ * How agent team teammates display: "auto" picks split panes in tmux or iTerm2, in-process otherwise. Agent teams are experimental and disabled by default. Enable them by adding CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS to your settings.json or environment. See https://code.claude.com/docs/en/agent-teams
819
+ */
820
+ teammateMode?: 'auto' | 'in-process' | 'tmux';
821
+ /**
822
+ * (Managed settings only) Custom message appended to the plugin trust warning shown before installation. Use to provide organization-specific context about approved plugins. See https://code.claude.com/docs/en/settings#plugin-settings
823
+ */
824
+ pluginTrustMessage?: string;
825
+ /**
826
+ * Per-plugin configuration including MCP server user configs, keyed by plugin ID (plugin@marketplace format). See https://code.claude.com/docs/en/plugins
827
+ */
828
+ pluginConfigs?: {
829
+ [k: string]:
830
+ | {
831
+ /**
832
+ * User configuration values for MCP servers keyed by server name
833
+ */
834
+ mcpServers?: {
835
+ [k: string]:
836
+ | {
837
+ [k: string]: (string | number | boolean | string[]) | undefined;
838
+ }
839
+ | undefined;
840
+ };
841
+ }
842
+ | undefined;
843
+ };
844
+ /**
845
+ * (Managed settings only) Only allowedMcpServers from managed settings are respected. deniedMcpServers still merges from all sources. Users can still add their own MCP servers, but only the admin-defined allowlist applies.
846
+ */
847
+ allowManagedMcpServersOnly?: boolean;
848
+ /**
849
+ * (Managed settings only) Blocklist of marketplace sources. These exact sources are blocked from being added as marketplaces. The check happens before downloading, so blocked sources never touch the filesystem.
850
+ */
851
+ blockedMarketplaces?: (
852
+ | {
853
+ /**
854
+ * Block marketplace fetched from direct URL
855
+ */
856
+ source: 'url';
857
+ /**
858
+ * Direct URL to marketplace.json file
859
+ */
860
+ url: string;
861
+ /**
862
+ * Custom HTTP headers (e.g., for authentication)
863
+ */
864
+ headers?: {
865
+ [k: string]: string | undefined;
866
+ };
867
+ }
868
+ | {
869
+ /**
870
+ * Block marketplace from GitHub repository
871
+ */
872
+ source: 'github';
873
+ /**
874
+ * GitHub repository in owner/repo format
875
+ */
876
+ repo: string;
877
+ /**
878
+ * Git branch or tag to use
879
+ */
880
+ ref?: string;
881
+ /**
882
+ * Path to marketplace.json within repo
883
+ */
884
+ path?: string;
885
+ }
886
+ | {
887
+ /**
888
+ * Block marketplace from git repository URL
889
+ */
890
+ source: 'git';
891
+ /**
892
+ * Full git repository URL
893
+ */
894
+ url: string;
895
+ /**
896
+ * Git branch or tag to use
897
+ */
898
+ ref?: string;
899
+ /**
900
+ * Path to marketplace.json within repo
901
+ */
902
+ path?: string;
903
+ }
904
+ | {
905
+ /**
906
+ * Block marketplace from NPM package
907
+ */
908
+ source: 'npm';
909
+ /**
910
+ * NPM package containing marketplace.json
911
+ */
912
+ package: string;
913
+ }
914
+ | {
915
+ /**
916
+ * Block marketplace from local file
917
+ */
918
+ source: 'file';
919
+ /**
920
+ * Local file path to marketplace.json
921
+ */
922
+ path: string;
923
+ }
924
+ | {
925
+ /**
926
+ * Block marketplace from local directory
927
+ */
928
+ source: 'directory';
929
+ /**
930
+ * Local directory containing .claude-plugin/marketplace.json
931
+ */
932
+ path: string;
933
+ }
934
+ | {
935
+ /**
936
+ * Block marketplace by host pattern matching
937
+ */
938
+ source: 'hostPattern';
939
+ /**
940
+ * Regex pattern to match the host/domain extracted from any marketplace source type
941
+ */
942
+ hostPattern: string;
943
+ }
944
+ | {
945
+ /**
946
+ * Block marketplace by file/directory path pattern matching
947
+ */
948
+ source: 'pathPattern';
949
+ /**
950
+ * Regex pattern to match file or directory paths for marketplace sources
951
+ */
952
+ pathPattern: string;
953
+ }
954
+ )[];
955
+ [k: string]: unknown | undefined;
956
+ }
957
+ /**
958
+ * Hook matcher configuration with multiple hooks
959
+ */
960
+ export interface HookMatcher {
961
+ /**
962
+ * Optional pattern to match event contexts, case-sensitive. Behavior depends on event type. See https://code.claude.com/docs/en/hooks#matcher-patterns for event-specific details and examples
963
+ */
964
+ matcher?: string;
965
+ /**
966
+ * Array of hooks to execute
967
+ */
968
+ hooks: HookCommand[];
969
+ }