Model Keamanan

Halaman ini menjelaskan bagaimana snsagent melindungi mesin Anda saat menjalankan tools atas nama Anda.

Bagaimana eksekusi tool dijaga

Agen menjalankan tools (bash, edit/write, browser, ssh, MCP, dan lainnya) di balik kebijakan persetujuan:

  • Mode default adalah always-ask. Tool read-only disetujui otomatis; tool write dan exec meminta konfirmasi sebelum dijalankan.
  • Auto-approve (“yolo”) bersifat opt-in. Aktifkan secara eksplisit dengan --approval-mode yolo / --yolo atau tools.approvalMode: yolo di config. Subagent berjalan headless di belakang batas persetujuan parent-task.
  • Adapter Telegram juga mematuhi gerbang allowlist (lihat di bawah).

Memory di-scope per-proyek (mnemopi.scoping), jadi memori tiap proyek tetap terisolasi. Tidak ada secret yang di-commit ke repository (.env* dan .sns-myagent/ di-gitignore).

Fitur keamanan per permukaan

PermukaanPerlindungan
Kebijakan persetujuanTool read-only disetujui otomatis; tool write/exec meminta konfirmasi. Default always-ask, yolo opt-in
bashKebijakan persetujuan + clampTimeout
eval (py/js/jl/rb)Allowlist environment per-runtime
write/editKebijakan persetujuan + guard path-escape di src/tools/write.ts
readKebijakan persetujuan + resolveReadPath menolak escape ../ relatif
sshPersetujuan + direktori ssh-control
browser (puppeteer)Direktori sandbox ~/.omp/puppeteer
TelegramAllowlist numerik opt-in SNS_TELEGRAM_ALLOWED_USERS
MCPServer yang dikonfigurasi pengguna; instruksi server ditandai belum terverifikasi
plugins~/.omp/plugins + npm install; kepercayaan supply-chain ada di pengguna
cronJob persisten via settings
goalsBudget token src/goals/runtime.ts
subagentsBudget src/task/executor.ts + spawn allowlist
secretsAuthStorage / resolver api-key; tidak pernah di-log
memoryScoping per-proyek
GitHubRead-only via gh CLI / cache

Otorisasi Telegram

Bridge Telegram adalah permukaan yang terlihat jaringan. Agar aman:

  1. Set SNS_TELEGRAM_ALLOWED_USERS ke ID pengguna Telegram numerik Anda.
  2. Hanya ID pengguna yang terdaftar (dan group chat yang mereka buat) yang dilayani; semua yang lain ditolak sebelum agen dikonsultasikan.
  3. Saat tidak di-set, peringatan di-log dan bot melayani pengirim mana pun.

Peringatan: jaga SNS_TELEGRAM_ALLOWED_USERS tetap ter-set. Deployment tanpa itu adalah permukaan eksekusi jarak jauh tanpa autentikasi.

Sesi Telegram menjalankan tools dengan autoApprove: true, jadi allowlist mempersempit siapa yang bisa berbicara ke agen, bukan tindakan apa yang disetujui. Tinjau batas ini sebelum mengekspos bot di jaringan bersama.

Penanganan secret

  • API key dan token tidak pernah di-log. Situs log untuk token dan key mencetak status atau path, tidak pernah nilainya.
  • Simpan key di environment variable (OPENAI_API_KEY, ANTHROPIC_API_KEY, …) atau config lokal yang di-gitignore. Jangan pernah commit key asli.

Observabilitas

Panggilan logger.debug/warn terstruktur tersebar di src/, termasuk log gerbang auth (userId, chatId) untuk bridge Telegram.

Path file yang penting

PerhatianTempat melihat
Guard path read/writesrc/tools/write.ts, src/tools/read.ts
Kebijakan persetujuansrc/config/settings-schema.ts (tools.approvalMode)
Allowlist Telegramsrc/adapters/telegram/handler.ts
Budget subagentsrc/task/executor.ts
Budget token goalsrc/goals/runtime.ts