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.5Migrasi ke Claude 4.5Penghentian modelHarga
    Bangun dengan Claude
    Ikhtisar fiturMenggunakan Messages APIJendela konteksPraktik terbaik prompting
    Kemampuan
    Prompt cachingPengeditan konteksExtended thinkingUpayaStreaming MessagesPemrosesan 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 terbaikMenggunakan 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 (multishot prompting)Biarkan Claude berpikir (CoT)Gunakan tag XMLBerikan Claude peran (prompt sistem)Isi sebelumnya respons ClaudeRantai prompt kompleksTips konteks panjangTips extended thinking
    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 APIAPI Penggunaan dan BiayaClaude Code Analytics API
    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

    Referensi Agent SDK - TypeScript

    Referensi API lengkap untuk Agent SDK TypeScript, 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

    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 tool 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 tool
    descriptionstringDeskripsi tentang apa yang dilakukan tool
    inputSchemaSchema extends ZodRawShapeSkema Zod yang mendefinisikan parameter input tool
    handler(args, extra) => Promise<CallToolResult>Fungsi asinkron yang mengeksekusi logika tool

    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 tool 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

    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()Menghentikan query (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 thinking maksimal (hanya tersedia dalam mode input streaming)
    supportedCommands()Mengembalikan slash command yang tersedia

    AgentDefinition

    Konfigurasi untuk subagen yang didefinisikan secara terprogram.

    type AgentDefinition = {
      description: string;
      tools?: string[];
      prompt: string;
      model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
    }
    FieldDiperlukanDeskripsi
    descriptionYaDeskripsi bahasa alami tentang kapan menggunakan agent ini
    toolsTidakArray nama tool yang diizinkan. Jika dihilangkan, mewarisi semua tool
    promptYaSystem prompt agent
    modelTidakOverride model untuk agent 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 testing dan CI:

    // Pastikan perilaku konsisten di CI dengan mengecualikan pengaturan lokal
    const result = query({
      prompt: "Jalankan test",
      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 mengganti pengaturan filesystem.

    PermissionMode

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

    CanUseTool

    Tipe fungsi izin kustom untuk mengontrol penggunaan tool.

    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;
    }
    FieldTipeDeskripsi
    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 query.

    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 tool 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

    Event 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 Tool

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

    ToolInput

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

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

    Task

    Nama tool: Task

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

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

    AskUserQuestion

    Nama tool: 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 singkat 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 Handling the AskUserQuestion Tool untuk detail penggunaan.

    Bash

    Nama tool: 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 background
       */
      run_in_background?: boolean;
    }

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

    BashOutput

    Nama tool: BashOutput

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

    Mengambil output dari shell bash background yang sedang berjalan atau selesai.

    Edit

    Nama tool: 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 tool: 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 tool: 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 tool: 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 tool: 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;
      /**
       * Tipe 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 case insensitive
       */
      '-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;
    }

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

    KillBash

    Nama tool: KillBash

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

    Membunuh shell bash background yang sedang berjalan berdasarkan ID-nya.

    NotebookEdit

    Nama tool: 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;
      /**
       * Tipe sel (code atau markdown)
       */
      cell_type?: 'code' | 'markdown';
      /**
       * Tipe edit (replace, insert, delete)
       */
      edit_mode?: 'replace' | 'insert' | 'delete';
    }

    Mengedit sel dalam file notebook Jupyter.

    WebFetch

    Nama tool: 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 tool: WebSearch

    interface WebSearchInput {
      /**
       * Query 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 tool: 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 tool: 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 tool: ListMcpResources

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

    Mencantumkan resource MCP yang tersedia dari server yang terhubung.

    ReadMcpResource

    Nama tool: ReadMcpResource

    interface ReadMcpResourceInput {
      /**
       * Nama server MCP
       */
      server: string;
      /**
       * URI resource yang akan dibaca
       */
      uri: string;
    }

    Membaca resource MCP tertentu dari server.

    Tipe Output Tool

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

    ToolOutput

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

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

    Task

    Nama tool: 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;
      };
      /**
       * Total biaya 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 tool: 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 tool: Bash

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

    Mengembalikan output perintah dengan status exit. Perintah background mengembalikan segera dengan shellId.

    BashOutput

    Nama tool: BashOutput

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

    Mengembalikan output inkremental dari shell background.

    Edit

    Nama tool: Edit

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

    Mengembalikan konfirmasi edit yang berhasil dengan jumlah penggantian.

    Baca

    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.

    Tulis

    Nama alat: Write

    interface WriteOutput {
      /**
       * Pesan kesuksesan
       */
      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 {
      /**
       * Jumlah 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 kesuksesan
       */
      message: string;
      /**
       * ID shell yang dibunuh
       */
      shell_id: string;
    }

    Mengembalikan konfirmasi setelah menghentikan shell latar belakang.

    NotebookEdit

    Nama alat: NotebookEdit

    interface NotebookEditOutput {
      /**
       * Pesan kesuksesan
       */
      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 terhadap 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 web yang diformat.

    TodoWrite

    Nama alat: TodoWrite

    interface TodoWriteOutput {
      /**
       * Pesan kesuksesan
       */
      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 Sonnet 4, Claude Sonnet 4.5

    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 Usage dengan semua field yang dapat bernilai null dibuat non-nullable.

    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 abort.

    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
    autoAllowBashIfSandboxedbooleanfalseSetujui otomatis perintah bash saat sandbox diaktifkan
    excludedCommandsstring[][]Perintah yang selalu melewati pembatasan sandbox (misalnya, ['docker']). Ini berjalan tanpa sandbox secara otomatis tanpa keterlibatan model

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

    • Pembatasan baca sistem file: Aturan deny baca
    • Pembatasan tulis sistem file: Aturan allow/deny edit
    • Pembatasan jaringan: Aturan allow/deny 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,
          excludedCommands: ["docker"],
          network: {
            allowLocalBinding: true,
            allowUnixSockets: ["/var/run/docker.sock"]
          }
        }
      }
    });

    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 soket Unix yang dapat diakses proses (misalnya, soket Docker)
    allowAllUnixSocketsbooleanfalseIzinkan akses ke semua soket Unix
    httpProxyPort

    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 untuk 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: Membiarkan 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
    • Implementasi allowlist: Hanya izinkan perintah tertentu untuk berjalan tanpa sandbox
    • Tambahkan alur persetujuan: Memerlukan otorisasi eksplisit untuk operasi yang istimewa

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

    Lihat juga

    • Ringkasan SDK - Konsep SDK umum
    • Referensi SDK Python - Dokumentasi SDK Python
    • Referensi CLI - Antarmuka baris perintah
    • Alur kerja umum - Panduan langkah demi langkah
    • 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 Tool
    • ToolInput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Read
    • Write
    • Glob
    • Grep
    • KillBash
    • NotebookEdit
    • WebFetch
    • WebSearch
    • TodoWrite
    • ExitPlanMode
    • ListMcpResources
    • ReadMcpResource
    • Tipe Output Tool
    • ToolOutput
    • Task
    • AskUserQuestion
    • Bash
    • BashOutput
    • Edit
    • Baca
    • Tulis
    • 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
    allowDangerouslySkipPermissions
    boolean
    false
    Aktifkan bypass izin. Diperlukan saat menggunakan permissionMode: 'bypassPermissions'
    allowedToolsstring[]Semua toolDaftar nama tool yang diizinkan
    betasSdkBeta[][]Aktifkan fitur beta (misalnya, ['context-1m-2025-08-07'])
    canUseToolCanUseToolundefinedFungsi izin kustom untuk penggunaan tool
    continuebooleanfalseLanjutkan percakapan terbaru
    cwdstringprocess.cwd()Direktori kerja saat ini
    disallowedToolsstring[][]Daftar nama tool 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 event
    includePartialMessagesbooleanfalseSertakan event pesan parsial
    maxBudgetUsdnumberundefinedAnggaran maksimal dalam USD untuk query
    maxThinkingTokensnumberundefinedToken maksimal untuk proses thinking
    maxTurnsnumberundefinedPutaran percakapan maksimal
    mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Konfigurasi server MCP
    modelstringDefault dari CLIModel Claude yang digunakan
    outputFormat{ type: 'json_schema', schema: JSONSchema }undefinedTentukan format output untuk hasil agent. Lihat Structured outputs untuk detail
    pathToClaudeCodeExecutablestringMenggunakan executable bawaanPath ke executable Claude Code
    permissionModePermissionMode'default'Mode izin untuk sesi
    permissionPromptToolNamestringundefinedNama tool 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 kosong)Konfigurasi system prompt. Teruskan string untuk prompt kustom, atau { type: 'preset', preset: 'claude_code' } untuk menggunakan system prompt Claude Code. Saat menggunakan bentuk objek preset, tambahkan append untuk memperluas system prompt dengan instruksi tambahan
    toolsstring[] | { type: 'preset'; preset: 'claude_code' }undefinedKonfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan tool default Claude Code
    supportedModels()
    Mengembalikan model yang tersedia dengan info tampilan
    mcpServerStatus()Mengembalikan status server MCP yang terhubung
    accountInfo()Mengembalikan informasi akun
    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
    number
    undefined
    Port proxy HTTP untuk permintaan jaringan
    socksProxyPortnumberundefinedPort proxy SOCKS untuk permintaan jaringan