Tools
Referensi lengkap tool Minicode: filesystem, search, exec, git, web, memory, plan, agents, MCP, LSP.
Pilih tool ini ketika: file untuk baca/tulis presisi (bukan cat via bash); search untuk menemukan kode (bukan grep via bash); bash untuk perintah yang memang butuh shell; git tool untuk status/diff/log/commit (bukan git mentah — operasi baca dinetralkan dan commit menolak custom filter repo); web untuk sumber publik; memory untuk fakta lintas sesi (bukan tempelan prompt); delegate untuk penelahan paralel yang hasilnya diverifikasi parent.
Daftar pasti kapan pun:
bun -e "import {allTools} from './src/tools/index.ts'; console.log(allTools.map(t=>t.name))"
cwd tool file wajib dari ToolContext.cwd, bukan process.cwd() (seam cwd?: string di kernel + resolve(sessionRoot, raw) + file-lock per-cwd).
Filesystem
Tool · Fungsi · Catatan
read_file · Baca teks + nomor baris, chunk offset/limit · Footer beri offset berikutnya. >2 MB wajib offset/limit, bukan potong diam-diam. Realpath jail + secret-scrub. Output 12: const x = 1 agar rujukan edit akurat
write_file · Buat/overwrite, auto-buat parent · Atomic tmp→rename + mkdir. LSP diagnostics otomatis bila server terkonfigurasi
edit · Ganti string (harus tepat 1×) · Unique+atomic, fuzzy CRLF/spasi + hashline deterministik (src/tools/hashline.ts)
apply_patch · Blok SEARCH/REPLACE multi-hunk ala Aider · Satu call banyak patch
move_file · Pindah/rename atomik · Dest yang ada dibackup ke trash dulu (catat path). Dijail di permission layer juga
delete_file · Soft-delete ke .minicode/.trash/ · Undo via move_file. Cap 100 terbaru, gitignored. Shared helper src/lib/trash.ts
read_image · Gambar → konteks model · Base64 utuh + lapor (bytes mime, tokens) via estimateImageTokens. Pembukaan memeriksa target canonical, boundary ulang, identitas handle dev+ino, dan hardlink (safeOpenRead). Guard file-size 2 MB, tetapi batas efektif lebih ketat: b64 dibatasi anggaran truncate kernel (toolResultMaxTokens 4096×4−200 ≈ 16 KB) agar gambar tak terpotong korup
Contoh paging:
read_file({ path: "src/big.ts" })
read_file({ path: "src/big.ts", offset: 2001 })
read_file({ path: "src/big.ts", offset: 500, limit: 50 })
Search
Tool · Fungsi · Catatan
glob · Cari pola **/*.ts · Mendukung {a,b}, cwd jail
grep · Regex lintas file · rg --vimgrep --no-follow bila ada di PATH, fallback walker internal. Keduanya jail + secret-scrub sama, hasil identik. MINICODE_GREP_ENGINE=js paksa fallback. Bila rg gagal (flavour regex beda), otomatis fallback + warning
Exec
Tool · Fungsi · Catatan
bash · Shell 30 dtk SIGTERM→SIGKILL · Tanpa MINICODE_SANDBOX: jalan di HOST (network tidak diisolasi, teraudit di step-traces). cwd jail (= cwd eksekusi, bukan process.cwd), env kredensial di-strip (sanitizeSpawnEnv), progres streaming, background:true + bash_output/bash_kill, sandbox docker/os optional. Request sandbox eksplisit tanpa backend = TOLAK (fail-closed); fallback host hanya via MINICODE_SANDBOX_ALLOW_FALLBACK=1. background:true ditolak saat --sandbox aktif dan di sub-agen
bash_output · Output BARU job sejak baca terakhir · + exit status
bash_kill · Stop job · SIGTERM lalu SIGKILL; tree-kill (taskkill /T /F di Windows, process-group di POSIX)
code_run · Snippet python/node tanpa shell · Spawn langsung argv (tanpa shell agar $(...) tidak dieksekusi shell dulu). Wajib sandbox `os · docker (alias bwrap/seatbelt), network-isolated, cwd = session root. Fail-closed bila backend tak tersedia. Image default node:22-alpine hanya bawa node — python butuh MINICODE_SANDBOX_IMAGE` yang menyediakannya
Background:
bash({ cmd: "bun run dev", background: true }) # → bg_xxxxxxxx
bash_output({ id: "bg_xxxxxxxx" })
bash_kill({ id: "bg_xxxxxxxx" })
Batas BASH_BACKGROUND_MAX_JOBS; semua job mati saat CLI keluar.
Git (read + satu penulis)
Tool · Fungsi · Catatan
git_status · status --porcelain + diff --stat + log -10 · cwd jail
git_diff · diff unstaged atau --staged · —
git_log · log --oneline -n · —
git_commit · Commit saja · Di-gate seperti delegate_task (TTY = minta sekali, non-TTY = tolak; readonly/plan/allowlist = tolak). Menolak sebelum staging jika config Git efektif memuat custom filter; tinjau filter terpercaya lalu lakukan commit manual. Sub-agent tidak mendapatkannya. Yang sengaja tidak ada: amend/reset/rebase/checkout/branch -D/stash drop. Pesan via -m tunggal agar $()/backtick tidak dieksekusi; git add -- <paths> agar file -weird.txt tidak jadi flag
git_push · Push branch lokal ke remote · Di-gate seperti git_commit; butuh branch/remote eksplisit atau setUpstream. Hardening GIT_SAFE_BASE menetralkan hook pre-push + filter repo. Di mode unrestricted, kredensial git sempit (GH_TOKEN/GITHUB_TOKEN/SSH_AUTH_SOCK) diteruskan ke subprocess; di mode lain push hanya berhasil bila kredensial sudah tersedia di mesin (mis. credential helper OS). Sub-agent tidak mendapatkannya
Web
Tool · Fungsi · Catatan
web_fetch · GET URL publik, 10 dtk, max 50k char · SSRF guard + DNS pinning, redirect manual ≤5 hop, body hard-cap 2 MB
web_search · Search via Tavily/Brave/DuckDuckGo · Urutan: TAVILY_API_KEY → BRAVE_API_KEY → DDG html lite (tanpa key)
Memory & plan
Tool · Fungsi · Catatan
read_memory · Baca MEMORY.md + vector RAG hybrid · —
write_memory · Tulis + vector store · {category?, tags?}, default fact. Kategori `fact · decision · preference · snippet · summary, boost decision` +0.1
forget_memory · Hapus cocok query · Menghapus vector + baris file di scope lokal DAN global (keduanya di-search; MEMORY.md root/CLAUDE.md tak ikut). Hitung-dulu-sebelum-DELETE (trigger FTS mengacaukan sqlite3_changes)
todo_write / todo_read · Rencana per sesi (3+ langkah) · Kirim seluruh daftar tiap kali. Status `pending · in_progress · completed · cancelled, satu in_progress dipertahankan. Disimpan .minicode/todos/<session>.json + artifact .minicode/plans/<id>.md`
submit_result · Hasil akhir JSON terstruktur 1× · NO_PROMPT, exec --json verbatim. result.findings eksplisit diproyeksikan sebagai finding.detected. Pengganti response_format
ask_user · Tanya klarifikasi mid-run · Gated + render via injeksi promptAskText (fail-closed non-TTY)
Agents
Tool · Fungsi · Catatan
delegate_task · Sub-agen isolasi explore/plan · Pool 3, context/memory/signal/budget terpisah, abort-aware. Di ASK, TTY meminta persetujuan dan non-TTY menolak; AUTO berjalan tanpa prompt bila authorized. Parent PermissionMode ASK/plan/readonly memaksa explore; WorkMode DISCUSS/PLAN membatasi tool anak ke subset eksplorasi. Anak tidak mendapat commit, memory/todo writes, nesting, atau job background; tool MCP built-in (mcp_call/mcp_read/mcp_prompt) hanya ikut pada mode anak plan di bawah BUILD. Satu approval mencakup satu delegasi; turn gagal setelah anak committed → warning [recovery]
MCP
Tool · Spec · Catatan
mcp_list · tools/list + resources/list + prompts/list · Read-only, tidak di-gate. Panggil dulu
mcp_call · tools/call · Di-gate. 1 approval = 1 call. Jalan di luar policy minicode. Abort/timeout setelah request dikirim dilaporkan sebagai outcome unknown; periksa state server sebelum retry
mcp_read · resources/read · Di-gate meski read-only (konten pihak ketiga = jalur prompt-injection). Biner diganti penanda ukuran
mcp_prompt · prompts/get · Di-gate, server merender argumen
Plus tool dinamis serverId.toolName. Semua bertitik selalu di-gate (tanpa wildcard auto-allow). Detail transport di MCP & LSP.
LSP
Butuh minicode config lsp add dulu. Setelah terdaftar:
Tool · Fungsi
lsp_diagnostics · Diagnostik 1 file
lsp_definition · Lokasi definisi (file+symbol atau line/character)
lsp_references · Semua referensi se-repo
lsp_hover · Info tipe
lsp_symbols · Outline dokumen
lsp_workspace_symbols · Cari se-workspace; query kosong = populer
didClose cleanup otomatis.
Rantai pemeriksaan
PermissionHandler → validateArgs (kernel) → executor (order/cap/abort-aware) → tool realpath+atomic(O_EXCL) → execute. Executor order-preserving: mixed step sequential, pure-read paralel, write di-cap, antrean abort-aware.