Loading...
    • Panduan Pengembang
    • Referensi API
    • MCP
    • Sumber daya
    • Catatan rilis
    Search...
    ⌘K
    Langkah pertama
    Pengenalan ClaudeMulai cepat
    Model & harga
    Ikhtisar modelMemilih modelYang baru di Claude 4.6Panduan migrasiPenghentian modelHarga
    Bangun dengan Claude
    Ikhtisar fiturMenggunakan Messages APIMenangani alasan berhentiPraktik terbaik prompting
    Manajemen konteks
    Jendela konteksKompresiPengeditan konteks
    Kemampuan
    Caching promptPemikiran diperpanjangPemikiran adaptifUpayaStreaming pesanPemrosesan batchKutipanDukungan multibahasaPenghitungan tokenEmbeddingsVisiDukungan PDFFiles APIHasil pencarianOutput terstruktur
    Alat
    IkhtisarCara mengimplementasikan penggunaan alatStreaming alat berbutir halusAlat BashAlat eksekusi kodePemanggilan alat terprogramAlat penggunaan komputerAlat editor teksAlat pengambilan webAlat pencarian webAlat memoriAlat pencarian alat
    Keterampilan Agen
    IkhtisarMulai cepatPraktik terbaikKeterampilan untuk perusahaanMenggunakan Keterampilan dengan API
    Agent SDK
    IkhtisarMulai cepatTypeScript SDKTypeScript V2 (pratinjau)Python SDKPanduan migrasi
    MCP di API
    Konektor MCPServer MCP jarak jauh
    Claude di platform pihak ketiga
    Amazon BedrockMicrosoft FoundryVertex AI
    Rekayasa prompt
    IkhtisarGenerator promptGunakan template promptPenyempurna promptJadilah jelas dan langsungGunakan contoh (prompting multishot)Biarkan Claude berpikir (CoT)Gunakan tag XMLBerikan Claude peran (prompt sistem)Rantai prompt kompleksTips konteks panjangTips pemikiran diperpanjang
    Uji & evaluasi
    Tentukan kriteria kesuksesanKembangkan kasus ujiMenggunakan alat evaluasiMengurangi latensi
    Perkuat penjaga
    Kurangi halusinasiTingkatkan konsistensi outputMitigasi jailbreakStreaming penolakanKurangi kebocoran promptJaga Claude tetap dalam karakter
    Administrasi dan pemantauan
    Ikhtisar Admin APIResidensi dataRuang kerjaAPI penggunaan dan biayaClaude Code Analytics APIRetensi data nol
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    Agent SDK

    Agent SDK reference - TypeScript

    Referensi API lengkap untuk TypeScript Agent SDK, termasuk semua fungsi, tipe, dan antarmuka.

    Coba antarmuka V2 baru (pratinjau): Antarmuka yang disederhanakan dengan pola send() dan receive() kini tersedia, membuat percakapan multi-putaran lebih mudah. Pelajari lebih lanjut tentang pratinjau TypeScript V2

    Instalasi

    npm install @anthropic-ai/claude-agent-sdk

    Fungsi

    query()

    Fungsi utama untuk berinteraksi dengan Claude Code. Membuat generator asinkron yang melakukan streaming pesan saat tiba.

    function query({
      prompt,
      options
    }: {
      prompt: string | AsyncIterable<SDKUserMessage>;
      options?: Options;
    }): Query

    Parameter

    ParameterTipeDeskripsi
    promptstring | AsyncIterable<SDKUserMessage>Prompt input sebagai string atau async iterable untuk mode streaming
    optionsOptionsObjek konfigurasi opsional (lihat tipe Options di bawah)

    Pengembalian

    Mengembalikan objek Query yang memperluas AsyncGenerator<SDKMessage, void> dengan metode tambahan.

    tool()

    Membuat definisi alat MCP yang aman tipe untuk digunakan dengan server MCP SDK.

    function tool<Schema extends ZodRawShape>(
      name: string,
      description: string,
      inputSchema: Schema,
      handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
    ): SdkMcpToolDefinition<Schema>

    Parameter

    ParameterTipeDeskripsi
    namestringNama alat
    descriptionstringDeskripsi tentang apa yang dilakukan alat
    inputSchemaSchema extends ZodRawShapeSkema Zod yang mendefinisikan parameter input alat
    handler(args, extra) => Promise<CallToolResult>Fungsi asinkron yang mengeksekusi logika alat

    createSdkMcpServer()

    Membuat instance server MCP yang berjalan dalam proses yang sama dengan aplikasi Anda.

    function createSdkMcpServer(options: {
      name: string;
      version?: string;
      tools?: Array<SdkMcpToolDefinition<any>>;
    }): McpSdkServerConfigWithInstance

    Parameter

    ParameterTipeDeskripsi
    options.namestringNama server MCP
    options.versionstringString versi opsional
    options.toolsArray<SdkMcpToolDefinition>Array definisi alat yang dibuat dengan tool()

    Tipe

    Options

    Objek konfigurasi untuk fungsi query().

    PropertiTipeDefaultDeskripsi
    abortControllerAbortControllernew AbortController()Pengontrol untuk membatalkan operasi
    additionalDirectoriesstring[][]Direktori tambahan yang dapat diakses Claude
    agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedTentukan subagen secara terprogram
    allowDangerouslySkipPermissionsbooleanfalseAktifkan bypass izin. Diperlukan saat menggunakan permissionMode: 'bypassPermissions'
    allowedToolsstring[]Semua alatDaftar nama alat yang diizinkan
    betasSdkBeta[][]Aktifkan fitur beta (misalnya, ['context-1m-2025-08-07'])
    canUseToolCanUseToolundefinedFungsi izin kustom untuk penggunaan alat
    continuebooleanfalseLanjutkan percakapan terbaru
    cwdstringprocess.cwd()Direktori kerja saat ini
    disallowedToolsstring[][]Daftar nama alat yang tidak diizinkan
    enableFileCheckpointingbooleanfalseAktifkan pelacakan perubahan file untuk rewinding. Lihat File checkpointing
    envDict<string>process.envVariabel lingkungan
    executable'bun' | 'deno' | 'node'Terdeteksi otomatisRuntime JavaScript yang digunakan
    executableArgsstring[][]Argumen untuk diteruskan ke executable
    extraArgsRecord<string, string | null>{}Argumen tambahan
    fallbackModelstringundefinedModel yang digunakan jika model utama gagal
    forkSessionbooleanfalseSaat melanjutkan dengan resume, fork ke ID sesi baru alih-alih melanjutkan sesi asli
    hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Callback hook untuk acara
    includePartialMessagesbooleanfalseSertakan acara pesan parsial
    maxBudgetUsdnumberundefinedAnggaran maksimum dalam USD untuk kueri
    maxThinkingTokensnumberundefinedToken maksimum untuk proses pemikiran
    maxTurnsnumberundefinedPutaran percakapan maksimum
    mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Konfigurasi server MCP
    modelstringDefault dari CLIModel Claude yang digunakan
    outputFormat{ type: 'json_schema', schema: JSONSchema }undefinedTentukan format output untuk hasil agen. Lihat Structured outputs untuk detail
    pathToClaudeCodeExecutablestringMenggunakan executable bawaanPath ke executable Claude Code
    permissionModePermissionMode'default'Mode izin untuk sesi
    permissionPromptToolNamestringundefinedNama alat MCP untuk prompt izin
    pluginsSdkPluginConfig[][]Muat plugin kustom dari path lokal. Lihat Plugins untuk detail
    resumestringundefinedID sesi untuk dilanjutkan
    resumeSessionAtstringundefinedLanjutkan sesi pada UUID pesan tertentu
    sandboxSandboxSettingsundefinedKonfigurasi perilaku sandbox secara terprogram. Lihat Sandbox settings untuk detail
    settingSourcesSettingSource[][] (tidak ada pengaturan)Kontrol sumber pengaturan berbasis filesystem yang dimuat. Saat dihilangkan, tidak ada pengaturan yang dimuat. Catatan: Harus menyertakan 'project' untuk memuat file CLAUDE.md
    stderr(data: string) => voidundefinedCallback untuk output stderr
    strictMcpConfigbooleanfalseTerapkan validasi MCP ketat
    systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (prompt minimal)Konfigurasi prompt sistem. Teruskan string untuk prompt kustom, atau { type: 'preset', preset: 'claude_code' } untuk menggunakan prompt sistem Claude Code. Saat menggunakan bentuk objek preset, tambahkan append untuk memperluas prompt sistem dengan instruksi tambahan
    toolsstring[] | { type: 'preset'; preset: 'claude_code' }undefinedKonfigurasi alat. Teruskan array nama alat atau gunakan preset untuk mendapatkan alat default Claude Code

    Query

    Antarmuka yang dikembalikan oleh fungsi query().

    interface Query extends AsyncGenerator<SDKMessage, void> {
      interrupt(): Promise<void>;
      rewindFiles(userMessageUuid: string): Promise<void>;
      setPermissionMode(mode: PermissionMode): Promise<void>;
      setModel(model?: string): Promise<void>;
      setMaxThinkingTokens(maxThinkingTokens: number | null): Promise<void>;
      supportedCommands(): Promise<SlashCommand[]>;
      supportedModels(): Promise<ModelInfo[]>;
      mcpServerStatus(): Promise<McpServerStatus[]>;
      accountInfo(): Promise<AccountInfo>;
    }

    Metode

    MetodeDeskripsi
    interrupt()Mengganggu kueri (hanya tersedia dalam mode input streaming)
    rewindFiles(userMessageUuid)Mengembalikan file ke keadaan mereka pada pesan pengguna yang ditentukan. Memerlukan enableFileCheckpointing: true. Lihat File checkpointing
    setPermissionMode()Mengubah mode izin (hanya tersedia dalam mode input streaming)
    setModel()Mengubah model (hanya tersedia dalam mode input streaming)
    setMaxThinkingTokens()Mengubah token pemikiran maksimum (hanya tersedia dalam mode input streaming)
    supportedCommands()Mengembalikan perintah slash yang tersedia
    supportedModels()Mengembalikan model yang tersedia dengan info tampilan
    mcpServerStatus()Mengembalikan status server MCP yang terhubung
    accountInfo()Mengembalikan informasi akun

    AgentDefinition

    Konfigurasi untuk subagen yang didefinisikan secara terprogram.

    type AgentDefinition = {
      description: string;
      tools?: string[];
      prompt: string;
      model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
    }
    BidangDiperlukanDeskripsi
    descriptionYaDeskripsi bahasa alami tentang kapan menggunakan agen ini
    toolsTidakArray nama alat yang diizinkan. Jika dihilangkan, mewarisi semua alat
    promptYaPrompt sistem agen
    modelTidakOverride model untuk agen ini. Jika dihilangkan, menggunakan model utama

    SettingSource

    Mengontrol sumber konfigurasi berbasis filesystem yang dimuat pengaturan SDK.

    type SettingSource = 'user' | 'project' | 'local';
    NilaiDeskripsiLokasi
    'user'Pengaturan pengguna global~/.claude/settings.json
    'project'Pengaturan proyek bersama (version controlled).claude/settings.json
    'local'Pengaturan proyek lokal (gitignored).claude/settings.local.json

    Perilaku default

    Ketika settingSources dihilangkan atau undefined, SDK tidak memuat pengaturan filesystem apa pun. Ini memberikan isolasi untuk aplikasi SDK.

    Mengapa menggunakan settingSources?

    Muat semua pengaturan filesystem (perilaku legacy):

    // Muat semua pengaturan seperti SDK v0.0.x
    const result = query({
      prompt: "Analisis kode ini",
      options: {
        settingSources: ['user', 'project', 'local']  // Muat semua pengaturan
      }
    });

    Muat hanya sumber pengaturan tertentu:

    // Muat hanya pengaturan proyek, abaikan pengguna dan lokal
    const result = query({
      prompt: "Jalankan pemeriksaan CI",
      options: {
        settingSources: ['project']  // Hanya .claude/settings.json
      }
    });

    Lingkungan pengujian dan CI:

    // Pastikan perilaku konsisten di CI dengan mengecualikan pengaturan lokal
    const result = query({
      prompt: "Jalankan tes",
      options: {
        settingSources: ['project'],  // Hanya pengaturan bersama tim
        permissionMode: 'bypassPermissions'
      }
    });

    Aplikasi SDK-only:

    // Tentukan semuanya secara terprogram (perilaku default)
    // Tidak ada dependensi filesystem - settingSources default ke []
    const result = query({
      prompt: "Tinjau PR ini",
      options: {
        // settingSources: [] adalah default, tidak perlu ditentukan
        agents: { /* ... */ },
        mcpServers: { /* ... */ },
        allowedTools: ['Read', 'Grep', 'Glob']
      }
    });

    Memuat instruksi proyek CLAUDE.md:

    // Muat pengaturan proyek untuk menyertakan file CLAUDE.md
    const result = query({
      prompt: "Tambahkan fitur baru mengikuti konvensi proyek",
      options: {
        systemPrompt: {
          type: 'preset',
          preset: 'claude_code'  // Diperlukan untuk menggunakan CLAUDE.md
        },
        settingSources: ['project'],  // Memuat CLAUDE.md dari direktori proyek
        allowedTools: ['Read', 'Write', 'Edit']
      }
    });

    Preseden pengaturan

    Ketika beberapa sumber dimuat, pengaturan digabungkan dengan preseden ini (tertinggi ke terendah):

    1. Pengaturan lokal (.claude/settings.local.json)
    2. Pengaturan proyek (.claude/settings.json)
    3. Pengaturan pengguna (~/.claude/settings.json)

    Opsi terprogram (seperti agents, allowedTools) selalu menimpa pengaturan filesystem.

    PermissionMode

    type PermissionMode =
      | 'default'           // Perilaku izin standar
      | 'acceptEdits'       // Auto-accept pengeditan file
      | 'bypassPermissions' // Bypass semua pemeriksaan izin
      | 'plan'              // Mode perencanaan - tidak ada eksekusi

    CanUseTool

    Tipe fungsi izin kustom untuk mengontrol penggunaan alat.

    type CanUseTool = (
      toolName: string,
      input: ToolInput,
      options: {
        signal: AbortSignal;
        suggestions?: PermissionUpdate[];
      }
    ) => Promise<PermissionResult>;

    PermissionResult

    Hasil pemeriksaan izin.

    type PermissionResult = 
      | {
          behavior: 'allow';
          updatedInput: ToolInput;
          updatedPermissions?: PermissionUpdate[];
        }
      | {
          behavior: 'deny';
          message: string;
          interrupt?: boolean;
        }

    McpServerConfig

    Konfigurasi untuk server MCP.

    type McpServerConfig = 
      | McpStdioServerConfig
      | McpSSEServerConfig
      | McpHttpServerConfig
      | McpSdkServerConfigWithInstance;

    McpStdioServerConfig

    type McpStdioServerConfig = {
      type?: 'stdio';
      command: string;
      args?: string[];
      env?: Record<string, string>;
    }

    McpSSEServerConfig

    type McpSSEServerConfig = {
      type: 'sse';
      url: string;
      headers?: Record<string, string>;
    }

    McpHttpServerConfig

    type McpHttpServerConfig = {
      type: 'http';
      url: string;
      headers?: Record<string, string>;
    }

    McpSdkServerConfigWithInstance

    type McpSdkServerConfigWithInstance = {
      type: 'sdk';
      name: string;
      instance: McpServer;
    }

    SdkPluginConfig

    Konfigurasi untuk memuat plugin di SDK.

    type SdkPluginConfig = {
      type: 'local';
      path: string;
    }
    BidangTipeDeskripsi
    type'local'Harus 'local' (hanya plugin lokal yang didukung saat ini)
    pathstringPath absolut atau relatif ke direktori plugin

    Contoh:

    plugins: [
      { type: 'local', path: './my-plugin' },
      { type: 'local', path: '/absolute/path/to/plugin' }
    ]

    Untuk informasi lengkap tentang membuat dan menggunakan plugin, lihat Plugins.

    Tipe Pesan

    SDKMessage

    Tipe union dari semua pesan yang mungkin dikembalikan oleh kueri.

    type SDKMessage = 
      | SDKAssistantMessage
      | SDKUserMessage
      | SDKUserMessageReplay
      | SDKResultMessage
      | SDKSystemMessage
      | SDKPartialAssistantMessage
      | SDKCompactBoundaryMessage;

    SDKAssistantMessage

    Pesan respons asisten.

    type SDKAssistantMessage = {
      type: 'assistant';
      uuid: UUID;
      session_id: string;
      message: APIAssistantMessage; // Dari Anthropic SDK
      parent_tool_use_id: string | null;
    }

    SDKUserMessage

    Pesan input pengguna.

    type SDKUserMessage = {
      type: 'user';
      uuid?: UUID;
      session_id: string;
      message: APIUserMessage; // Dari Anthropic SDK
      parent_tool_use_id: string | null;
    }

    SDKUserMessageReplay

    Pesan pengguna yang diputar ulang dengan UUID yang diperlukan.

    type SDKUserMessageReplay = {
      type: 'user';
      uuid: UUID;
      session_id: string;
      message: APIUserMessage;
      parent_tool_use_id: string | null;
    }

    SDKResultMessage

    Pesan hasil akhir.

    type SDKResultMessage =
      | {
          type: 'result';
          subtype: 'success';
          uuid: UUID;
          session_id: string;
          duration_ms: number;
          duration_api_ms: number;
          is_error: boolean;
          num_turns: number;
          result: string;
          total_cost_usd: number;
          usage: NonNullableUsage;
          modelUsage: { [modelName: string]: ModelUsage };
          permission_denials: SDKPermissionDenial[];
          structured_output?: unknown;
        }
      | {
          type: 'result';
          subtype:
            | 'error_max_turns'
            | 'error_during_execution'
            | 'error_max_budget_usd'
            | 'error_max_structured_output_retries';
          uuid: UUID;
          session_id: string;
          duration_ms: number;
          duration_api_ms: number;
          is_error: boolean;
          num_turns: number;
          total_cost_usd: number;
          usage: NonNullableUsage;
          modelUsage: { [modelName: string]: ModelUsage };
          permission_denials: SDKPermissionDenial[];
          errors: string[];
        }

    SDKSystemMessage

    Pesan inisialisasi sistem.

    type SDKSystemMessage = {
      type: 'system';
      subtype: 'init';
      uuid: UUID;
      session_id: string;
      apiKeySource: ApiKeySource;
      cwd: string;
      tools: string[];
      mcp_servers: {
        name: string;
        status: string;
      }[];
      model: string;
      permissionMode: PermissionMode;
      slash_commands: string[];
      output_style: string;
    }

    SDKPartialAssistantMessage

    Pesan parsial streaming (hanya ketika includePartialMessages adalah true).

    type SDKPartialAssistantMessage = {
      type: 'stream_event';
      event: RawMessageStreamEvent; // Dari Anthropic SDK
      parent_tool_use_id: string | null;
      uuid: UUID;
      session_id: string;
    }

    SDKCompactBoundaryMessage

    Pesan yang menunjukkan batas pemadatan percakapan.

    type SDKCompactBoundaryMessage = {
      type: 'system';
      subtype: 'compact_boundary';
      uuid: UUID;
      session_id: string;
      compact_metadata: {
        trigger: 'manual' | 'auto';
        pre_tokens: number;
      };
    }

    SDKPermissionDenial

    Informasi tentang penggunaan alat yang ditolak.

    type SDKPermissionDenial = {
      tool_name: string;
      tool_use_id: string;
      tool_input: ToolInput;
    }

    Tipe Hook

    Untuk panduan komprehensif tentang menggunakan hook dengan contoh dan pola umum, lihat Panduan Hooks.

    HookEvent

    Acara hook yang tersedia.

    type HookEvent =
      | 'PreToolUse'
      | 'PostToolUse'
      | 'PostToolUseFailure'
      | 'Notification'
      | 'UserPromptSubmit'
      | 'SessionStart'
      | 'SessionEnd'
      | 'Stop'
      | 'SubagentStart'
      | 'SubagentStop'
      | 'PreCompact'
      | 'PermissionRequest';

    HookCallback

    Tipe fungsi callback hook.

    type HookCallback = (
      input: HookInput, // Union dari semua tipe input hook
      toolUseID: string | undefined,
      options: { signal: AbortSignal }
    ) => Promise<HookJSONOutput>;

    HookCallbackMatcher

    Konfigurasi hook dengan matcher opsional.

    interface HookCallbackMatcher {
      matcher?: string;
      hooks: HookCallback[];
    }

    HookInput

    Tipe union dari semua tipe input hook.

    type HookInput =
      | PreToolUseHookInput
      | PostToolUseHookInput
      | PostToolUseFailureHookInput
      | NotificationHookInput
      | UserPromptSubmitHookInput
      | SessionStartHookInput
      | SessionEndHookInput
      | StopHookInput
      | SubagentStartHookInput
      | SubagentStopHookInput
      | PreCompactHookInput
      | PermissionRequestHookInput;

    BaseHookInput

    Antarmuka dasar yang diperluas oleh semua tipe input hook.

    type BaseHookInput = {
      session_id: string;
      transcript_path: string;
      cwd: string;
      permission_mode?: string;
    }

    PreToolUseHookInput

    type PreToolUseHookInput = BaseHookInput & {
      hook_event_name: 'PreToolUse';
      tool_name: string;
      tool_input: unknown;
    }

    PostToolUseHookInput

    type PostToolUseHookInput = BaseHookInput & {
      hook_event_name: 'PostToolUse';
      tool_name: string;
      tool_input: unknown;
      tool_response: unknown;
    }

    PostToolUseFailureHookInput

    type PostToolUseFailureHookInput = BaseHookInput & {
      hook_event_name: 'PostToolUseFailure';
      tool_name: string;
      tool_input: unknown;
      error: string;
      is_interrupt?: boolean;
    }

    NotificationHookInput

    type NotificationHookInput = BaseHookInput & {
      hook_event_name: 'Notification';
      message: string;
      title?: string;
    }

    UserPromptSubmitHookInput

    type UserPromptSubmitHookInput = BaseHookInput & {
      hook_event_name: 'UserPromptSubmit';
      prompt: string;
    }

    SessionStartHookInput

    type SessionStartHookInput = BaseHookInput & {
      hook_event_name: 'SessionStart';
      source: 'startup' | 'resume' | 'clear' | 'compact';
    }

    SessionEndHookInput

    type SessionEndHookInput = BaseHookInput & {
      hook_event_name: 'SessionEnd';
      reason: ExitReason;  // String dari array EXIT_REASONS
    }

    StopHookInput

    type StopHookInput = BaseHookInput & {
      hook_event_name: 'Stop';
      stop_hook_active: boolean;
    }

    SubagentStartHookInput

    type SubagentStartHookInput = BaseHookInput & {
      hook_event_name: 'SubagentStart';
      agent_id: string;
      agent_type: string;
    }

    SubagentStopHookInput

    type SubagentStopHookInput = BaseHookInput & {
      hook_event_name: 'SubagentStop';
      stop_hook_active: boolean;
    }

    PreCompactHookInput

    type PreCompactHookInput = BaseHookInput & {
      hook_event_name: 'PreCompact';
      trigger: 'manual' | 'auto';
      custom_instructions: string | null;
    }

    PermissionRequestHookInput

    type PermissionRequestHookInput = BaseHookInput & {
      hook_event_name: 'PermissionRequest';
      tool_name: string;
      tool_input: unknown;
      permission_suggestions?: PermissionUpdate[];
    }

    HookJSONOutput

    Nilai pengembalian hook.

    type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

    AsyncHookJSONOutput

    type AsyncHookJSONOutput = {
      async: true;
      asyncTimeout?: number;
    }

    SyncHookJSONOutput

    type SyncHookJSONOutput = {
      continue?: boolean;
      suppressOutput?: boolean;
      stopReason?: string;
      decision?: 'approve' | 'block';
      systemMessage?: string;
      reason?: string;
      hookSpecificOutput?:
        | {
            hookEventName: 'PreToolUse';
            permissionDecision?: 'allow' | 'deny' | 'ask';
            permissionDecisionReason?: string;
            updatedInput?: Record<string, unknown>;
          }
        | {
            hookEventName: 'UserPromptSubmit';
            additionalContext?: string;
          }
        | {
            hookEventName: 'SessionStart';
            additionalContext?: string;
          }
        | {
            hookEventName: 'PostToolUse';
            additionalContext?: string;
          };
    }

    Tipe Input Alat

    Dokumentasi skema input untuk semua alat Claude Code bawaan. Tipe-tipe ini diekspor dari @anthropic-ai/claude-agent-sdk dan dapat digunakan untuk interaksi alat yang aman tipe.

    ToolInput

    Catatan: Ini adalah tipe dokumentasi saja untuk kejelasan. Ini mewakili union dari semua tipe input alat.

    type ToolInput =
      | AgentInput
      | AskUserQuestionInput
      | BashInput
      | BashOutputInput
      | FileEditInput
      | FileReadInput
      | FileWriteInput
      | GlobInput
      | GrepInput
      | KillShellInput
      | NotebookEditInput
      | WebFetchInput
      | WebSearchInput
      | TodoWriteInput
      | ExitPlanModeInput
      | ListMcpResourcesInput
      | ReadMcpResourceInput;

    Task

    Nama alat: Task

    interface AgentInput {
      /**
       * Deskripsi singkat tugas (3-5 kata)
       */
      description: string;
      /**
       * Tugas untuk dilakukan agen
       */
      prompt: string;
      /**
       * Jenis agen khusus yang digunakan untuk tugas ini
       */
      subagent_type: string;
    }

    Meluncurkan agen baru untuk menangani tugas kompleks multi-langkah secara otonom.

    AskUserQuestion

    Nama alat: AskUserQuestion

    interface AskUserQuestionInput {
      /**
       * Pertanyaan untuk ditanyakan kepada pengguna (1-4 pertanyaan)
       */
      questions: Array<{
        /**
         * Pertanyaan lengkap untuk ditanyakan kepada pengguna. Harus jelas, spesifik,
         * dan diakhiri dengan tanda tanya.
         */
        question: string;
        /**
         * Label sangat pendek ditampilkan sebagai chip/tag (maks 12 karakter).
         * Contoh: "Auth method", "Library", "Approach"
         */
        header: string;
        /**
         * Pilihan yang tersedia (2-4 opsi). Opsi "Other" disediakan
         * secara otomatis.
         */
        options: Array<{
          /**
           * Teks tampilan untuk opsi ini (1-5 kata)
           */
          label: string;
          /**
           * Penjelasan tentang apa arti opsi ini
           */
          description: string;
        }>;
        /**
         * Atur ke true untuk memungkinkan beberapa pilihan
         */
        multiSelect: boolean;
      }>;
      /**
       * Jawaban pengguna diisi oleh sistem izin.
       * Memetakan teks pertanyaan ke label opsi yang dipilih.
       * Jawaban multi-pilih dipisahkan dengan koma.
       */
      answers?: Record<string, string>;
    }

    Menanyakan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat Handle approvals and user input untuk detail penggunaan.

    Bash

    Nama alat: Bash

    interface BashInput {
      /**
       * Perintah yang akan dieksekusi
       */
      command: string;
      /**
       * Timeout opsional dalam milidetik (maks 600000)
       */
      timeout?: number;
      /**
       * Deskripsi jelas dan ringkas tentang apa yang dilakukan perintah ini dalam 5-10 kata
       */
      description?: string;
      /**
       * Atur ke true untuk menjalankan perintah ini di latar belakang
       */
      run_in_background?: boolean;
    }

    Mengeksekusi perintah bash dalam sesi shell persisten dengan timeout opsional dan eksekusi latar belakang.

    BashOutput

    Nama alat: BashOutput

    interface BashOutputInput {
      /**
       * ID shell latar belakang untuk mengambil output dari
       */
      bash_id: string;
      /**
       * Regex opsional untuk memfilter baris output
       */
      filter?: string;
    }

    Mengambil output dari shell bash yang sedang berjalan atau selesai.

    Edit

    Nama alat: Edit

    interface FileEditInput {
      /**
       * Path absolut ke file yang akan dimodifikasi
       */
      file_path: string;
      /**
       * Teks yang akan diganti
       */
      old_string: string;
      /**
       * Teks untuk menggantinya (harus berbeda dari old_string)
       */
      new_string: string;
      /**
       * Ganti semua kemunculan old_string (default false)
       */
      replace_all?: boolean;
    }

    Melakukan penggantian string yang tepat dalam file.

    Read

    Nama alat: Read

    interface FileReadInput {
      /**
       * Path absolut ke file yang akan dibaca
       */
      file_path: string;
      /**
       * Nomor baris untuk mulai membaca dari
       */
      offset?: number;
      /**
       * Jumlah baris yang akan dibaca
       */
      limit?: number;
    }

    Membaca file dari filesystem lokal, termasuk teks, gambar, PDF, dan notebook Jupyter.

    Write

    Nama alat: Write

    interface FileWriteInput {
      /**
       * Path absolut ke file yang akan ditulis
       */
      file_path: string;
      /**
       * Konten yang akan ditulis ke file
       */
      content: string;
    }

    Menulis file ke filesystem lokal, menimpa jika ada.

    Glob

    Nama alat: Glob

    interface GlobInput {
      /**
       * Pola glob untuk mencocokkan file
       */
      pattern: string;
      /**
       * Direktori untuk dicari (default ke cwd)
       */
      path?: string;
    }

    Pencocokan pola file cepat yang bekerja dengan ukuran codebase apa pun.

    Grep

    Nama alat: Grep

    interface GrepInput {
      /**
       * Pola ekspresi reguler untuk dicari
       */
      pattern: string;
      /**
       * File atau direktori untuk dicari (default ke cwd)
       */
      path?: string;
      /**
       * Pola glob untuk memfilter file (misalnya "*.js")
       */
      glob?: string;
      /**
       * Jenis file untuk dicari (misalnya "js", "py", "rust")
       */
      type?: string;
      /**
       * Mode output: "content", "files_with_matches", atau "count"
       */
      output_mode?: 'content' | 'files_with_matches' | 'count';
      /**
       * Pencarian tidak peka huruf besar-kecil
       */
      '-i'?: boolean;
      /**
       * Tampilkan nomor baris (untuk mode content)
       */
      '-n'?: boolean;
      /**
       * Baris untuk ditampilkan sebelum setiap kecocokan
       */
      '-B'?: number;
      /**
       * Baris untuk ditampilkan setelah setiap kecocokan
       */
      '-A'?: number;
      /**
       * Baris untuk ditampilkan sebelum dan sesudah setiap kecocokan
       */
      '-C'?: number;
      /**
       * Batasi output ke N baris/entri pertama
       */
      head_limit?: number;
      /**
       * Aktifkan mode multiline
       */
      multiline?: boolean;
    }

    Alat pencarian yang kuat dibangun di atas ripgrep dengan dukungan regex.

    KillBash

    Nama alat: KillBash

    interface KillShellInput {
      /**
       * ID shell latar belakang yang akan dibunuh
       */
      shell_id: string;
    }

    Membunuh shell bash latar belakang yang sedang berjalan berdasarkan ID-nya.

    NotebookEdit

    Nama alat: NotebookEdit

    interface NotebookEditInput {
      /**
       * Path absolut ke file notebook Jupyter
       */
      notebook_path: string;
      /**
       * ID sel yang akan diedit
       */
      cell_id?: string;
      /**
       * Sumber baru untuk sel
       */
      new_source: string;
      /**
       * Jenis sel (code atau markdown)
       */
      cell_type?: 'code' | 'markdown';
      /**
       * Jenis edit (replace, insert, delete)
       */
      edit_mode?: 'replace' | 'insert' | 'delete';
    }

    Mengedit sel dalam file notebook Jupyter.

    WebFetch

    Nama alat: WebFetch

    interface WebFetchInput {
      /**
       * URL untuk mengambil konten dari
       */
      url: string;
      /**
       * Prompt untuk dijalankan pada konten yang diambil
       */
      prompt: string;
    }

    Mengambil konten dari URL dan memprosesnya dengan model AI.

    WebSearch

    Nama alat: WebSearch

    interface WebSearchInput {
      /**
       * Kueri pencarian yang digunakan
       */
      query: string;
      /**
       * Hanya sertakan hasil dari domain ini
       */
      allowed_domains?: string[];
      /**
       * Jangan pernah sertakan hasil dari domain ini
       */
      blocked_domains?: string[];
    }

    Mencari web dan mengembalikan hasil yang diformat.

    TodoWrite

    Nama alat: TodoWrite

    interface TodoWriteInput {
      /**
       * Daftar todo yang diperbarui
       */
      todos: Array<{
        /**
         * Deskripsi tugas
         */
        content: string;
        /**
         * Status tugas
         */
        status: 'pending' | 'in_progress' | 'completed';
        /**
         * Bentuk aktif dari deskripsi tugas
         */
        activeForm: string;
      }>;
    }

    Membuat dan mengelola daftar tugas terstruktur untuk melacak kemajuan.

    ExitPlanMode

    Nama alat: ExitPlanMode

    interface ExitPlanModeInput {
      /**
       * Rencana yang akan dijalankan oleh pengguna untuk persetujuan
       */
      plan: string;
    }

    Keluar dari mode perencanaan dan meminta pengguna untuk menyetujui rencana.

    ListMcpResources

    Nama alat: ListMcpResources

    interface ListMcpResourcesInput {
      /**
       * Nama server opsional untuk memfilter sumber daya
       */
      server?: string;
    }

    Mencantumkan sumber daya MCP yang tersedia dari server yang terhubung.

    ReadMcpResource

    Nama alat: ReadMcpResource

    interface ReadMcpResourceInput {
      /**
       * Nama server MCP
       */
      server: string;
      /**
       * URI sumber daya untuk dibaca
       */
      uri: string;
    }

    Membaca sumber daya MCP tertentu dari server.

    Tipe Output Alat

    Dokumentasi skema output untuk semua alat Claude Code bawaan. Tipe-tipe ini mewakili data respons aktual yang dikembalikan oleh setiap alat.

    ToolOutput

    Catatan: Ini adalah tipe dokumentasi saja untuk kejelasan. Ini mewakili union dari semua tipe output alat.

    type ToolOutput =
      | TaskOutput
      | AskUserQuestionOutput
      | BashOutput
      | BashOutputToolOutput
      | EditOutput
      | ReadOutput
      | WriteOutput
      | GlobOutput
      | GrepOutput
      | KillBashOutput
      | NotebookEditOutput
      | WebFetchOutput
      | WebSearchOutput
      | TodoWriteOutput
      | ExitPlanModeOutput
      | ListMcpResourcesOutput
      | ReadMcpResourceOutput;

    Task

    Nama alat: Task

    interface TaskOutput {
      /**
       * Pesan hasil akhir dari subagen
       */
      result: string;
      /**
       * Statistik penggunaan token
       */
      usage?: {
        input_tokens: number;
        output_tokens: number;
        cache_creation_input_tokens?: number;
        cache_read_input_tokens?: number;
      };
      /**
       * Biaya total dalam USD
       */
      total_cost_usd?: number;
      /**
       * Durasi eksekusi dalam milidetik
       */
      duration_ms?: number;
    }

    Mengembalikan hasil akhir dari subagen setelah menyelesaikan tugas yang didelegasikan.

    AskUserQuestion

    Nama alat: AskUserQuestion

    interface AskUserQuestionOutput {
      /**
       * Pertanyaan yang ditanyakan
       */
      questions: Array<{
        question: string;
        header: string;
        options: Array<{
          label: string;
          description: string;
        }>;
        multiSelect: boolean;
      }>;
      /**
       * Jawaban yang diberikan oleh pengguna.
       * Memetakan teks pertanyaan ke string jawaban.
       * Jawaban multi-pilih dipisahkan dengan koma.
       */
      answers: Record<string, string>;
    }

    Mengembalikan pertanyaan yang ditanyakan dan jawaban pengguna.

    Bash

    Nama alat: Bash

    interface BashOutput {
      /**
       * Output stdout dan stderr gabungan
       */
      output: string;
      /**
       * Kode keluar perintah
       */
      exitCode: number;
      /**
       * Apakah perintah dibunuh karena timeout
       */
      killed?: boolean;
      /**
       * Shell ID untuk proses latar belakang
       */
      shellId?: string;
    }

    Mengembalikan output perintah dengan status keluar. Perintah latar belakang kembali segera dengan shellId.

    BashOutput

    Nama alat: BashOutput

    interface BashOutputToolOutput {
      /**
       * Output baru sejak pemeriksaan terakhir
       */
      output: string;
      /**
       * Status shell saat ini
       */
      status: 'running' | 'completed' | 'failed';
      /**
       * Kode keluar (saat selesai)
       */
      exitCode?: number;
    }

    Mengembalikan output inkremental dari shell latar belakang.

    Edit

    Nama alat: Edit

    interface EditOutput {
      /**
       * Pesan konfirmasi
       */
      message: string;
      /**
       * Jumlah penggantian yang dilakukan
       */
      replacements: number;
      /**
       * Path file yang diedit
       */
      file_path: string;
    }

    Mengembalikan konfirmasi pengeditan yang berhasil dengan jumlah penggantian.

    Read

    Nama alat: Read

    type ReadOutput = 
      | TextFileOutput
      | ImageFileOutput
      | PDFFileOutput
      | NotebookFileOutput;
    
    interface TextFileOutput {
      /**
       * Konten file dengan nomor baris
       */
      content: string;
      /**
       * Total jumlah baris dalam file
       */
      total_lines: number;
      /**
       * Baris yang benar-benar dikembalikan
       */
      lines_returned: number;
    }
    
    interface ImageFileOutput {
      /**
       * Data gambar yang dikodekan Base64
       */
      image: string;
      /**
       * Tipe MIME gambar
       */
      mime_type: string;
      /**
       * Ukuran file dalam byte
       */
      file_size: number;
    }
    
    interface PDFFileOutput {
      /**
       * Array konten halaman
       */
      pages: Array<{
        page_number: number;
        text?: string;
        images?: Array<{
          image: string;
          mime_type: string;
        }>;
      }>;
      /**
       * Total jumlah halaman
       */
      total_pages: number;
    }
    
    interface NotebookFileOutput {
      /**
       * Sel notebook Jupyter
       */
      cells: Array<{
        cell_type: 'code' | 'markdown';
        source: string;
        outputs?: any[];
        execution_count?: number;
      }>;
      /**
       * Metadata notebook
       */
      metadata?: Record<string, any>;
    }

    Mengembalikan konten file dalam format yang sesuai dengan tipe file.

    Write

    Nama alat: Write

    interface WriteOutput {
      /**
       * Pesan sukses
       */
      message: string;
      /**
       * Jumlah byte yang ditulis
       */
      bytes_written: number;
      /**
       * Jalur file yang ditulis
       */
      file_path: string;
    }

    Mengembalikan konfirmasi setelah berhasil menulis file.

    Glob

    Nama alat: Glob

    interface GlobOutput {
      /**
       * Array jalur file yang cocok
       */
      matches: string[];
      /**
       * Jumlah kecocokan yang ditemukan
       */
      count: number;
      /**
       * Direktori pencarian yang digunakan
       */
      search_path: string;
    }

    Mengembalikan jalur file yang cocok dengan pola glob, diurutkan berdasarkan waktu modifikasi.

    Grep

    Nama alat: Grep

    type GrepOutput = 
      | GrepContentOutput
      | GrepFilesOutput
      | GrepCountOutput;
    
    interface GrepContentOutput {
      /**
       * Baris yang cocok dengan konteks
       */
      matches: Array<{
        file: string;
        line_number?: number;
        line: string;
        before_context?: string[];
        after_context?: string[];
      }>;
      /**
       * Total jumlah kecocokan
       */
      total_matches: number;
    }
    
    interface GrepFilesOutput {
      /**
       * File yang berisi kecocokan
       */
      files: string[];
      /**
       * Jumlah file dengan kecocokan
       */
      count: number;
    }
    
    interface GrepCountOutput {
      /**
       * Hitungan kecocokan per file
       */
      counts: Array<{
        file: string;
        count: number;
      }>;
      /**
       * Total kecocokan di semua file
       */
      total: number;
    }

    Mengembalikan hasil pencarian dalam format yang ditentukan oleh output_mode.

    KillBash

    Nama alat: KillBash

    interface KillBashOutput {
      /**
       * Pesan sukses
       */
      message: string;
      /**
       * ID shell yang dihentikan
       */
      shell_id: string;
    }

    Mengembalikan konfirmasi setelah menghentikan shell latar belakang.

    NotebookEdit

    Nama alat: NotebookEdit

    interface NotebookEditOutput {
      /**
       * Pesan sukses
       */
      message: string;
      /**
       * Jenis edit yang dilakukan
       */
      edit_type: 'replaced' | 'inserted' | 'deleted';
      /**
       * ID sel yang terpengaruh
       */
      cell_id?: string;
      /**
       * Total sel dalam notebook setelah edit
       */
      total_cells: number;
    }

    Mengembalikan konfirmasi setelah memodifikasi notebook Jupyter.

    WebFetch

    Nama alat: WebFetch

    interface WebFetchOutput {
      /**
       * Respons model AI terhadap prompt
       */
      response: string;
      /**
       * URL yang diambil
       */
      url: string;
      /**
       * URL akhir setelah pengalihan
       */
      final_url?: string;
      /**
       * Kode status HTTP
       */
      status_code?: number;
    }

    Mengembalikan analisis AI dari konten web yang diambil.

    WebSearch

    Nama alat: WebSearch

    interface WebSearchOutput {
      /**
       * Hasil pencarian
       */
      results: Array<{
        title: string;
        url: string;
        snippet: string;
        /**
         * Metadata tambahan jika tersedia
         */
        metadata?: Record<string, any>;
      }>;
      /**
       * Total jumlah hasil
       */
      total_results: number;
      /**
       * Query yang dicari
       */
      query: string;
    }

    Mengembalikan hasil pencarian yang diformat dari web.

    TodoWrite

    Nama alat: TodoWrite

    interface TodoWriteOutput {
      /**
       * Pesan sukses
       */
      message: string;
      /**
       * Statistik todo saat ini
       */
      stats: {
        total: number;
        pending: number;
        in_progress: number;
        completed: number;
      };
    }

    Mengembalikan konfirmasi dengan statistik tugas saat ini.

    ExitPlanMode

    Nama alat: ExitPlanMode

    interface ExitPlanModeOutput {
      /**
       * Pesan konfirmasi
       */
      message: string;
      /**
       * Apakah pengguna menyetujui rencana
       */
      approved?: boolean;
    }

    Mengembalikan konfirmasi setelah keluar dari mode rencana.

    ListMcpResources

    Nama alat: ListMcpResources

    interface ListMcpResourcesOutput {
      /**
       * Sumber daya yang tersedia
       */
      resources: Array<{
        uri: string;
        name: string;
        description?: string;
        mimeType?: string;
        server: string;
      }>;
      /**
       * Total jumlah sumber daya
       */
      total: number;
    }

    Mengembalikan daftar sumber daya MCP yang tersedia.

    ReadMcpResource

    Nama alat: ReadMcpResource

    interface ReadMcpResourceOutput {
      /**
       * Konten sumber daya
       */
      contents: Array<{
        uri: string;
        mimeType?: string;
        text?: string;
        blob?: string;
      }>;
      /**
       * Server yang menyediakan sumber daya
       */
      server: string;
    }

    Mengembalikan konten sumber daya MCP yang diminta.

    Jenis Izin

    PermissionUpdate

    Operasi untuk memperbarui izin.

    type PermissionUpdate = 
      | {
          type: 'addRules';
          rules: PermissionRuleValue[];
          behavior: PermissionBehavior;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'replaceRules';
          rules: PermissionRuleValue[];
          behavior: PermissionBehavior;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'removeRules';
          rules: PermissionRuleValue[];
          behavior: PermissionBehavior;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'setMode';
          mode: PermissionMode;
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'addDirectories';
          directories: string[];
          destination: PermissionUpdateDestination;
        }
      | {
          type: 'removeDirectories';
          directories: string[];
          destination: PermissionUpdateDestination;
        }

    PermissionBehavior

    type PermissionBehavior = 'allow' | 'deny' | 'ask';

    PermissionUpdateDestination

    type PermissionUpdateDestination = 
      | 'userSettings'     // Pengaturan pengguna global
      | 'projectSettings'  // Pengaturan proyek per-direktori
      | 'localSettings'    // Pengaturan lokal yang diabaikan git
      | 'session'          // Sesi saat ini saja

    PermissionRuleValue

    type PermissionRuleValue = {
      toolName: string;
      ruleContent?: string;
    }

    Jenis Lainnya

    ApiKeySource

    type ApiKeySource = 'user' | 'project' | 'org' | 'temporary';

    SdkBeta

    Fitur beta yang tersedia yang dapat diaktifkan melalui opsi betas. Lihat header Beta untuk informasi lebih lanjut.

    type SdkBeta = 'context-1m-2025-08-07';
    NilaiDeskripsiModel Kompatibel
    'context-1m-2025-08-07'Mengaktifkan jendela konteks 1 juta tokenClaude Opus 4.6, Claude Sonnet 4.5, Claude Sonnet 4

    SlashCommand

    Informasi tentang perintah garis miring yang tersedia.

    type SlashCommand = {
      name: string;
      description: string;
      argumentHint: string;
    }

    ModelInfo

    Informasi tentang model yang tersedia.

    type ModelInfo = {
      value: string;
      displayName: string;
      description: string;
    }

    McpServerStatus

    Status server MCP yang terhubung.

    type McpServerStatus = {
      name: string;
      status: 'connected' | 'failed' | 'needs-auth' | 'pending';
      serverInfo?: {
        name: string;
        version: string;
      };
    }

    AccountInfo

    Informasi akun untuk pengguna yang diautentikasi.

    type AccountInfo = {
      email?: string;
      organization?: string;
      subscriptionType?: string;
      tokenSource?: string;
      apiKeySource?: string;
    }

    ModelUsage

    Statistik penggunaan per-model yang dikembalikan dalam pesan hasil.

    type ModelUsage = {
      inputTokens: number;
      outputTokens: number;
      cacheReadInputTokens: number;
      cacheCreationInputTokens: number;
      webSearchRequests: number;
      costUSD: number;
      contextWindow: number;
    }

    ConfigScope

    type ConfigScope = 'local' | 'user' | 'project';

    NonNullableUsage

    Versi dari Usage dengan semua field yang dapat bernilai null dibuat tidak dapat bernilai null.

    type NonNullableUsage = {
      [K in keyof Usage]: NonNullable<Usage[K]>;
    }

    Usage

    Statistik penggunaan token (dari @anthropic-ai/sdk).

    type Usage = {
      input_tokens: number | null;
      output_tokens: number | null;
      cache_creation_input_tokens?: number | null;
      cache_read_input_tokens?: number | null;
    }

    CallToolResult

    Jenis hasil alat MCP (dari @modelcontextprotocol/sdk/types.js).

    type CallToolResult = {
      content: Array<{
        type: 'text' | 'image' | 'resource';
        // Field tambahan bervariasi menurut tipe
      }>;
      isError?: boolean;
    }

    AbortError

    Kelas error khusus untuk operasi pembatalan.

    class AbortError extends Error {}

    Konfigurasi Sandbox

    SandboxSettings

    Konfigurasi untuk perilaku sandbox. Gunakan ini untuk mengaktifkan sandboxing perintah dan mengonfigurasi pembatasan jaringan secara terprogram.

    type SandboxSettings = {
      enabled?: boolean;
      autoAllowBashIfSandboxed?: boolean;
      excludedCommands?: string[];
      allowUnsandboxedCommands?: boolean;
      network?: NetworkSandboxSettings;
      ignoreViolations?: SandboxIgnoreViolations;
      enableWeakerNestedSandbox?: boolean;
    }
    PropertiTipeDefaultDeskripsi
    enabledbooleanfalseAktifkan mode sandbox untuk eksekusi perintah
    autoAllowBashIfSandboxedbooleanfalsePersetujuan otomatis perintah bash saat sandbox diaktifkan
    excludedCommandsstring[][]Perintah yang selalu melewati pembatasan sandbox (misalnya, ['docker']). Ini berjalan tanpa sandbox secara otomatis tanpa keterlibatan model
    allowUnsandboxedCommandsbooleanfalseIzinkan model untuk meminta menjalankan perintah di luar sandbox. Ketika true, model dapat mengatur dangerouslyDisableSandbox dalam input alat, yang kembali ke sistem izin
    networkNetworkSandboxSettingsundefinedKonfigurasi sandbox khusus jaringan
    ignoreViolationsSandboxIgnoreViolationsundefinedKonfigurasi pelanggaran sandbox mana yang akan diabaikan
    enableWeakerNestedSandboxbooleanfalseAktifkan sandbox bersarang yang lebih lemah untuk kompatibilitas

    Pembatasan akses sistem file dan jaringan TIDAK dikonfigurasi melalui pengaturan sandbox. Sebaliknya, mereka berasal dari aturan izin:

    • Pembatasan baca sistem file: Aturan penolakan baca
    • Pembatasan tulis sistem file: Aturan izin/penolakan edit
    • Pembatasan jaringan: Aturan izin/penolakan WebFetch

    Gunakan pengaturan sandbox untuk sandboxing eksekusi perintah, dan aturan izin untuk kontrol akses sistem file dan jaringan.

    Contoh penggunaan

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Build and test my project",
      options: {
        sandbox: {
          enabled: true,
          autoAllowBashIfSandboxed: true,
          network: {
            allowLocalBinding: true
          }
        }
      }
    });

    Keamanan Unix socket: Opsi allowUnixSockets dapat memberikan akses ke layanan sistem yang kuat. Misalnya, mengizinkan /var/run/docker.sock secara efektif memberikan akses sistem host penuh melalui API Docker, melewati isolasi sandbox. Hanya izinkan Unix socket yang benar-benar diperlukan dan pahami implikasi keamanan dari masing-masing.

    NetworkSandboxSettings

    Konfigurasi khusus jaringan untuk mode sandbox.

    type NetworkSandboxSettings = {
      allowLocalBinding?: boolean;
      allowUnixSockets?: string[];
      allowAllUnixSockets?: boolean;
      httpProxyPort?: number;
      socksProxyPort?: number;
    }
    PropertiTipeDefaultDeskripsi
    allowLocalBindingbooleanfalseIzinkan proses untuk mengikat ke port lokal (misalnya, untuk server dev)
    allowUnixSocketsstring[][]Jalur Unix socket yang dapat diakses oleh proses (misalnya, Docker socket)
    allowAllUnixSocketsbooleanfalseIzinkan akses ke semua Unix socket
    httpProxyPortnumberundefinedPort proxy HTTP untuk permintaan jaringan
    socksProxyPortnumberundefinedPort proxy SOCKS untuk permintaan jaringan

    SandboxIgnoreViolations

    Konfigurasi untuk mengabaikan pelanggaran sandbox tertentu.

    type SandboxIgnoreViolations = {
      file?: string[];
      network?: string[];
    }
    PropertiTipeDefaultDeskripsi
    filestring[][]Pola jalur file untuk mengabaikan pelanggaran
    networkstring[][]Pola jaringan untuk mengabaikan pelanggaran

    Fallback Izin untuk Perintah Tanpa Sandbox

    Ketika allowUnsandboxedCommands diaktifkan, model dapat meminta untuk menjalankan perintah di luar sandbox dengan mengatur dangerouslyDisableSandbox: true dalam input alat. Permintaan ini kembali ke sistem izin yang ada, yang berarti handler canUseTool Anda akan dipanggil, memungkinkan Anda menerapkan logika otorisasi khusus.

    excludedCommands vs allowUnsandboxedCommands:

    • excludedCommands: Daftar statis perintah yang selalu melewati sandbox secara otomatis (misalnya, ['docker']). Model tidak memiliki kontrol atas ini.
    • allowUnsandboxedCommands: Memungkinkan model memutuskan pada waktu runtime apakah akan meminta eksekusi tanpa sandbox dengan mengatur dangerouslyDisableSandbox: true dalam input alat.
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    const result = await query({
      prompt: "Deploy my application",
      options: {
        sandbox: {
          enabled: true,
          allowUnsandboxedCommands: true  // Model dapat meminta eksekusi tanpa sandbox
        },
        permissionMode: "default",
        canUseTool: async (tool, input) => {
          // Periksa apakah model meminta untuk melewati sandbox
          if (tool === "Bash" && input.dangerouslyDisableSandbox) {
            // Model ingin menjalankan perintah ini di luar sandbox
            console.log(`Unsandboxed command requested: ${input.command}`);
    
            // Kembalikan true untuk mengizinkan, false untuk menolak
            return isCommandAuthorized(input.command);
          }
          return true;
        }
      }
    });

    Pola ini memungkinkan Anda untuk:

    • Audit permintaan model: Catat ketika model meminta eksekusi tanpa sandbox
    • Implementasikan daftar izin: Hanya izinkan perintah tertentu untuk berjalan tanpa sandbox
    • Tambahkan alur persetujuan: Memerlukan otorisasi eksplisit untuk operasi istimewa

    Perintah yang berjalan dengan dangerouslyDisableSandbox: true memiliki akses sistem penuh. Pastikan handler canUseTool Anda memvalidasi permintaan ini dengan hati-hati.

    Jika permissionMode diatur ke bypassPermissions dan allowUnsandboxedCommands diaktifkan, model dapat secara otonom menjalankan perintah di luar sandbox tanpa prompt persetujuan apa pun. Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.

    Lihat juga

    • Ikhtisar SDK - Konsep SDK umum
    • Referensi SDK Python - Dokumentasi SDK Python
    • Referensi CLI - Antarmuka baris perintah
    • Alur kerja umum - Panduan langkah demi langkah

    Was this page helpful?

    • Instalasi
    • Fungsi
    • query()
    • tool()
    • createSdkMcpServer()
    • Tipe
    • Options
    • Query
    • AgentDefinition
    • SettingSource
    • PermissionMode
    • CanUseTool
    • PermissionResult
    • McpServerConfig
    • SdkPluginConfig
    • Tipe Pesan
    • SDKMessage
    • SDKAssistantMessage
    • SDKUserMessage
    • SDKUserMessageReplay
    • SDKResultMessage
    • SDKSystemMessage
    • SDKPartialAssistantMessage
    • SDKCompactBoundaryMessage
    • SDKPermissionDenial
    • Tipe Hook
    • HookEvent
    • HookCallback
    • HookCallbackMatcher
    • HookInput
    • BaseHookInput
    • HookJSONOutput
    • Tipe Input Alat
    • ToolInput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Tipe Output Alat
    • ToolOutput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Jenis Izin
    • PermissionUpdate
    • PermissionBehavior
    • PermissionUpdateDestination
    • PermissionRuleValue
    • Jenis Lainnya
    • ApiKeySource
    • SdkBeta
    • SlashCommand
    • ModelInfo
    • McpServerStatus
    • AccountInfo
    • ModelUsage
    • ConfigScope
    • NonNullableUsage
    • Usage
    • CallToolResult
    • AbortError
    • Konfigurasi Sandbox
    • SandboxSettings
    • NetworkSandboxSettings
    • SandboxIgnoreViolations
    • Fallback Izin untuk Perintah Tanpa Sandbox
    • Lihat juga