whisper-windows-mcp 2.2.2 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/.github/workflows/ci.yml +24 -0
  2. package/.github/workflows/publish.yml +24 -0
  3. package/{LICENSE-COMMERCIAL.md → COMMERCIAL-LICENSE.md} +58 -58
  4. package/LICENSE +40 -40
  5. package/PRIVACY.es.md +194 -135
  6. package/PRIVACY.id.md +194 -135
  7. package/PRIVACY.ja.md +194 -135
  8. package/PRIVACY.ko.md +194 -135
  9. package/PRIVACY.md +194 -135
  10. package/PRIVACY.pl.md +194 -135
  11. package/PRIVACY.pt-BR.md +194 -135
  12. package/PRIVACY.ro.md +194 -135
  13. package/PRIVACY.uk.md +194 -135
  14. package/PRIVACY.vi.md +194 -135
  15. package/README.es.md +80 -48
  16. package/README.id.md +83 -40
  17. package/README.ja.md +106 -72
  18. package/README.ko.md +69 -37
  19. package/README.md +82 -39
  20. package/README.pl.md +83 -40
  21. package/README.pt-BR.md +77 -45
  22. package/README.ro.md +84 -41
  23. package/README.uk.md +83 -40
  24. package/README.vi.md +73 -41
  25. package/ROADMAP.es.md +131 -45
  26. package/ROADMAP.id.md +86 -89
  27. package/ROADMAP.ja.md +93 -108
  28. package/ROADMAP.ko.md +82 -82
  29. package/ROADMAP.pl.md +125 -41
  30. package/ROADMAP.pt-BR.md +87 -87
  31. package/ROADMAP.ro.md +123 -41
  32. package/ROADMAP.uk.md +82 -90
  33. package/ROADMAP.vi.md +87 -87
  34. package/SECURITY.es.md +76 -47
  35. package/SECURITY.id.md +76 -47
  36. package/SECURITY.ja.md +76 -47
  37. package/SECURITY.ko.md +76 -47
  38. package/SECURITY.md +33 -4
  39. package/SECURITY.pl.md +76 -47
  40. package/SECURITY.pt-BR.md +76 -47
  41. package/SECURITY.ro.md +76 -47
  42. package/SECURITY.uk.md +76 -47
  43. package/SECURITY.vi.md +76 -47
  44. package/TROUBLESHOOTING.es.md +325 -323
  45. package/TROUBLESHOOTING.id.md +349 -323
  46. package/TROUBLESHOOTING.ja.md +415 -286
  47. package/TROUBLESHOOTING.ko.md +325 -323
  48. package/TROUBLESHOOTING.pl.md +371 -323
  49. package/TROUBLESHOOTING.pt-BR.md +325 -323
  50. package/TROUBLESHOOTING.ro.md +371 -323
  51. package/TROUBLESHOOTING.uk.md +385 -323
  52. package/TROUBLESHOOTING.vi.md +325 -323
  53. package/dist/index.js +743 -289
  54. package/dist/lib.d.ts +37 -0
  55. package/dist/lib.js +123 -0
  56. package/package.json +46 -45
  57. package/patch_roadmaps.py +0 -72
package/SECURITY.es.md CHANGED
@@ -1,47 +1,76 @@
1
- # Política de Seguridad
2
-
3
- ## Alcance
4
-
5
- whisper-windows-mcp es una herramienta que prioriza lo local. Todo el procesamiento de audio ocurre en tu máquina — ningún audio, archivo de video ni dato personal es transmitido a ningún servidor. La superficie de ataque está limitada a:
6
-
7
- - El sistema de archivos local (rutas de archivo pasadas a las herramientas)
8
- - El binario whisper-cli.exe y sus dependencias
9
- - La conexión MCP de Claude Desktop (solo IPC local)
10
- - Texto de transcripción devuelto en respuestas de herramientas (ver Arquitectura de Privacidad abajo)
11
-
12
- ## Arquitectura de Privacidad
13
-
14
- **Los archivos de audio nunca salen de tu máquina.** Esta garantía es incondicional.
15
-
16
- **El texto de transcripción puede salir de tu máquina.** Cuando una respuesta de herramienta incluye texto de transcripción, ese texto es procesado por la API de Claude. Este es el comportamiento estándar de MCP, pero crea una brecha entre la filosofía de diseño "prioridad local" de la herramienta y el flujo de datos real para usuarios que manejan contenido regulado o confidencial.
17
-
18
- Una variable de entorno `WHISPER_PRIVACY_MODE` está planificada y restringirá todas las respuestas de herramientas solo a metadatos — ningún texto de transcripción devuelto a la API de Claude. Esta es la solución prevista para implementaciones médicas, jurídicas, financieras y corporativas.
19
-
20
- Ver [PRIVACY.md](PRIVACY.md) para la descripción completa de la arquitectura de privacidad, orientación de marcos de cumplimiento (HIPAA, GDPR, privilegio abogado-cliente, FERPA, SOX, PCI-DSS) e instrucciones de configuración.
21
-
22
- ## Versiones soportadas
23
-
24
- Las correcciones de seguridad solo se aplican a la versión publicada más reciente.
25
-
26
- | Versión | Soportada |
27
- |---|---|
28
- | 2.x (más reciente) | ✅ |
29
- | 1.x | ❌ |
30
-
31
- ## Reportar una vulnerabilidad
32
-
33
- **No abras una issue pública para vulnerabilidades de seguridad.**
34
-
35
- Usa el reporte privado de vulnerabilidades de GitHub:
36
- 1. Ve a la [pestaña Security](https://github.com/eviscerations/whisper-windows-mcp/security)
37
- 2. Haz clic en "Report a vulnerability"
38
- 3. Describe el problema con suficientes detalles para reproducirlo
39
-
40
- Recibirás una respuesta en 7 días. Si la vulnerabilidad es confirmada, se lanzará una corrección lo antes posible y serás acreditado en las notas de release si lo deseas.
41
-
42
- ## Decisiones de diseño conocidas
43
-
44
- - **Inyección de ruta de archivo:** Las herramientas aceptan rutas de archivo absolutas de Claude. Esto es por diseño — la herramienta está destinada a ser usada con Claude Desktop por el propietario de la máquina. No expongas este servidor MCP a acceso de red no confiable.
45
- - **Sin sandbox:** whisper-cli.exe se ejecuta con los mismos permisos que Claude Desktop. Esto es estándar para herramientas MCP locales.
46
- - **Archivos temporales:** Los archivos WAV intermedios se escriben en `%TEMP%\whisper_tmp_*.wav` y se eliminan tras la transcripción. Los archivos de estado de tareas se escriben en `%TEMP%\whisper-mcp-jobs\` y persisten hasta ser limpiados manualmente o hasta que la función de limpieza automática planificada esté disponible.
47
- - **Contenido de transcripción:** El texto de transcripción devuelto en respuestas de herramientas es procesado por la API de Claude. Esto está documentado y podrá ser abordado via `WHISPER_PRIVACY_MODE` en un release futuro. Ver [PRIVACY.md](PRIVACY.md).
1
+ # Política de Seguridad
2
+
3
+ ## Alcance
4
+
5
+ whisper-windows-mcp es una herramienta que prioriza lo local. Todo el procesamiento de audio ocurre en tu máquina — ningún audio, archivo de video ni dato personal es transmitido a ningún servidor. La superficie de ataque está limitada a:
6
+
7
+ - El sistema de archivos local (rutas de archivo pasadas a las herramientas)
8
+ - El binario whisper-cli.exe y sus dependencias
9
+ - La conexión MCP de Claude Desktop (solo IPC local)
10
+ - Texto de transcripción devuelto en respuestas de herramientas (ver Arquitectura de Privacidad abajo)
11
+
12
+ ## Arquitectura de Privacidad
13
+
14
+ **Los archivos de audio nunca salen de tu máquina.** Esta garantía es incondicional.
15
+
16
+ **El texto de transcripción puede salir de tu máquina en modo estándar.** Cuando una respuesta de herramienta incluye texto de transcripción, ese texto es procesado por la API de Claude. Este es el comportamiento estándar de MCP, pero crea una brecha entre la filosofía de diseño "prioridad local" de la herramienta y el flujo de datos real para usuarios que manejan contenido regulado o confidencial.
17
+
18
+ **El modo de privacidad** (`WHISPER_PRIVACY_MODE=true` o `privacy_mode=true` por llamada) restringe todas las respuestas de herramientas solo a metadatos — ningún texto de transcripción devuelto a la API de Claude. Esta es la configuración correcta para implementaciones médicas, jurídicas, financieras y corporativas.
19
+
20
+ **Puerta de modo de privacidad:** Cuando el modo de privacidad está activo, se muestra una divulgación de confirmación explícita antes de cada operación de transcripción. Esto es intencional y no puede omitirse — el cumplimiento normativo requiere consentimiento informado por operación.
21
+
22
+ **Puerta de consentimiento:** En modo estándar, se muestra una divulgación única por sesión antes de que el texto de transcripción sea devuelto a la API por primera vez en una sesión. Establece `WHISPER_CONSENT_ACKNOWLEDGED=true` en tu configuración para omitir esto en contenido no sensible.
23
+
24
+ Ver [PRIVACY.md](PRIVACY.md) para la descripción completa de la arquitectura de privacidad, orientación de marcos de cumplimiento (HIPAA, GDPR, privilegio abogado-cliente, FERPA, SOX, PCI-DSS) e instrucciones de configuración.
25
+
26
+ ## Verificación del binario
27
+
28
+ Para verificar la integridad del binario `whisper-cli.exe` en el release precompilado, comprueba su hash SHA256 en PowerShell:
29
+
30
+ ```powershell
31
+ Get-FileHash "C:\whisper\Release\whisper-cli.exe" -Algorithm SHA256
32
+ ```
33
+
34
+ El hash esperado para cada binario de release está publicado en la [página de releases](https://github.com/eviscerations/whisper-windows-mcp/releases). No uses un binario cuyo hash no coincida.
35
+
36
+ ## Versiones soportadas
37
+
38
+ Las correcciones de seguridad solo se aplican a la versión publicada más reciente.
39
+
40
+ | Versión | Soportada |
41
+ |---|---|
42
+ | 2.x (más reciente) | ✅ |
43
+ | 1.x | ❌ |
44
+
45
+ ## Reportar una vulnerabilidad
46
+
47
+ **No abras una issue pública para vulnerabilidades de seguridad.**
48
+
49
+ Usa el reporte privado de vulnerabilidades de GitHub:
50
+ 1. Ve a la [pestaña Security](https://github.com/eviscerations/whisper-windows-mcp/security)
51
+ 2. Haz clic en "Report a vulnerability"
52
+ 3. Describe el problema con suficientes detalles para reproducirlo
53
+
54
+ Recibirás una respuesta en 7 días. Si la vulnerabilidad es confirmada, se lanzará una corrección lo antes posible y serás acreditado en las notas de release si lo deseas.
55
+
56
+ ## Sandbox y aprobaciones
57
+
58
+ whisper-windows-mcp es una **herramienta local, de un solo usuario, controlada por el propietario de la máquina a través de Claude Desktop.** Su modelo de amenazas es el propietario ejecutándola en su propia máquina — no una implementación no confiable, multiinquilino o expuesta a la red.
59
+
60
+ - **Sandbox:** ninguno, por diseño. `whisper-cli.exe` se ejecuta con el propio nivel de permisos del propietario, igual que cualquier servidor MCP local. El aislamiento a nivel de SO no es la mitigación aquí; el ámbito de uso lo es — **no expongas este servidor a acceso de red no confiable** (consulta "Inyección de ruta de archivo" más abajo).
61
+ - **Las aprobaciones son por capas, no basadas en sandbox:**
62
+ 1. **Aprobación del host** — la capa MCP de Claude Desktop controla la invocación de herramientas.
63
+ 2. **Barreras de consentimiento / privacidad** — se requiere una confirmación explícita antes de que cualquier texto de transcripción salga de la máquina hacia la API de Claude; `WHISPER_PRIVACY_MODE` / `privacy_mode` por llamada devuelve solo metadatos para contenido regulado. La barrera está vinculada por operación (herramienta + argumentos). Ver [PRIVACY.md](PRIVACY.md).
64
+ 3. **Validación de entrada** — las rutas con recorrido de directorios y UNC son rechazadas; `switch_model` está contenido al directorio de modelos configurado; `download_model` está restringido a una lista de permitidos de espacios de nombres de Hugging Face de confianza.
65
+
66
+ Esta herramienta **no** está diseñada para ser controlada por un agente no confiable ni para ejecutarse como infraestructura compartida. Esa postura requeriría sandbox de SO/contenedor y una política de egreso — fuera del alcance de una herramienta de transcripción local de un solo usuario.
67
+
68
+ ## Decisiones de diseño conocidas
69
+
70
+ - **Inyección de ruta de archivo:** Las herramientas aceptan rutas de archivo absolutas de Claude. Esto es por diseño — la herramienta está destinada a ser usada con Claude Desktop por el propietario de la máquina. No expongas este servidor MCP a acceso de red no confiable.
71
+ - **Sin sandbox:** whisper-cli.exe se ejecuta con los mismos permisos que Claude Desktop. Esto es estándar para herramientas MCP locales.
72
+ - **Archivos temporales:** Los archivos WAV intermedios se escriben en `%TEMP%\whisper_tmp_*.wav` y se eliminan tras la transcripción. Los archivos de estado de tareas se escriben en `%TEMP%\whisper-mcp-jobs\` y se limpian automáticamente después de 7 días al iniciar el servidor.
73
+ - **Contenido de transcripción:** El texto de transcripción devuelto en respuestas de herramientas es procesado por la API de Claude en modo estándar. Para evitar esto, activa `WHISPER_PRIVACY_MODE=true` o pasa `privacy_mode=true` por llamada. Ver [PRIVACY.md](PRIVACY.md).
74
+ - **Inyección de transcripción:** Los archivos de audio pueden contener contenido hablado que, cuando se transcribe, se asemeja a instrucciones. Las defensas integradas de Claude manejan esto. El propio servidor MCP marca todo el contenido de transcripción como datos no confiables y nunca lo interpreta como instrucciones.
75
+ - **Las descargas de modelos están restringidas:** La herramienta `download_model` solo descarga desde dos espacios de nombres de Hugging Face de confianza (`ggerganov/whisper.cpp` y `ggml-org`). Los redireccionamientos son validados contra una lista de permitidos antes de seguirlos. Las URLs arbitrarias son rechazadas a nivel de código. Las descargas truncadas o incompletas se rechazan (comprobación de Content-Length) antes de que un archivo `.part` se promueva al nombre del modelo.
76
+ - **El cambio de modelos está en sandbox:** `switch_model` solo acepta archivos `.bin` dentro del directorio de modelos configurado. Las rutas fuera de él se rechazan mediante contención de rutas normalizada — un directorio con prefijo hermano como `…\models-evil` no puede satisfacer la comprobación — independientemente de cómo se especifique la ruta.
package/SECURITY.id.md CHANGED
@@ -1,47 +1,76 @@
1
- # Kebijakan Keamanan
2
-
3
- ## Cakupan
4
-
5
- whisper-windows-mcp adalah alat yang mengutamakan lokal. Semua pemrosesan audio terjadi di mesin Anda — tidak ada audio, file video, atau data pribadi yang dikirim ke server mana pun. Permukaan serangan terbatas pada:
6
-
7
- - Sistem file lokal (jalur file yang diteruskan ke alat)
8
- - Binary whisper-cli.exe dan dependensinya
9
- - Koneksi Claude Desktop MCP (hanya IPC lokal)
10
- - Teks transkrip yang dikembalikan dalam respons alat (lihat Arsitektur Privasi di bawah)
11
-
12
- ## Arsitektur Privasi
13
-
14
- **File audio tidak pernah meninggalkan mesin Anda.** Jaminan ini bersifat tanpa syarat.
15
-
16
- **Teks transkrip mungkin meninggalkan mesin Anda.** Saat respons alat menyertakan teks transkrip, teks tersebut diproses oleh API Claude. Ini adalah perilaku MCP standar tetapi menciptakan celah antara filosofi desain "utamakan lokal" alat dan aliran data aktual bagi pengguna yang menangani konten yang diatur atau rahasia.
17
-
18
- Variabel lingkungan `WHISPER_PRIVACY_MODE` direncanakan yang akan membatasi semua respons alat hanya ke metadata — tidak ada teks transkrip yang dikembalikan ke API Claude. Ini adalah solusi yang dimaksudkan untuk penerapan medis, hukum, keuangan, dan perusahaan.
19
-
20
- Lihat [PRIVACY.md](PRIVACY.md) untuk deskripsi arsitektur privasi lengkap, panduan kerangka kepatuhan (HIPAA, GDPR, hak istimewa pengacara-klien, FERPA, SOX, PCI-DSS), dan instruksi konfigurasi.
21
-
22
- ## Versi yang Didukung
23
-
24
- Perbaikan keamanan hanya diterapkan pada versi yang diterbitkan terbaru.
25
-
26
- | Versi | Didukung |
27
- |---|---|
28
- | 2.x (terbaru) | ✅ |
29
- | 1.x | ❌ |
30
-
31
- ## Melaporkan Kerentanan
32
-
33
- **Jangan buka issue publik untuk kerentanan keamanan.**
34
-
35
- Gunakan pelaporan kerentanan pribadi GitHub:
36
- 1. Buka [tab Security](https://github.com/eviscerations/whisper-windows-mcp/security)
37
- 2. Klik "Report a vulnerability"
38
- 3. Jelaskan masalah dengan detail yang cukup untuk mereproduksinya
39
-
40
- Anda akan menerima respons dalam 7 hari. Jika kerentanan dikonfirmasi, perbaikan akan dirilis sesegera mungkin dan Anda akan dikreditkan dalam catatan rilis jika Anda menginginkannya.
41
-
42
- ## Keputusan Desain yang Diketahui
43
-
44
- - **Injeksi jalur file:** Alat menerima jalur file absolut dari Claude. Ini adalah desain yang disengaja — alat ini dimaksudkan untuk digunakan dengan Claude Desktop oleh pemilik mesin. Jangan paparkan server MCP ini ke akses jaringan yang tidak terpercaya.
45
- - **Tidak ada sandboxing:** whisper-cli.exe berjalan dengan izin yang sama seperti Claude Desktop. Ini adalah standar untuk alat MCP lokal.
46
- - **File sementara:** File WAV perantara ditulis ke `%TEMP%\whisper_tmp_*.wav` dan dihapus setelah transkripsi. File status tugas ditulis ke `%TEMP%\whisper-mcp-jobs\` dan bertahan hingga dihapus secara manual atau hingga fitur pembersihan otomatis yang direncanakan tersedia.
47
- - **Konten transkrip:** Teks transkrip yang dikembalikan dalam respons alat diproses oleh API Claude. Ini terdokumentasi dan akan dapat diatasi melalui `WHISPER_PRIVACY_MODE` dalam rilis mendatang. Lihat [PRIVACY.md](PRIVACY.md).
1
+ # Kebijakan Keamanan
2
+
3
+ ## Cakupan
4
+
5
+ whisper-windows-mcp adalah alat yang mengutamakan lokal. Semua pemrosesan audio terjadi di mesin Anda — tidak ada audio, file video, atau data pribadi yang dikirim ke server mana pun. Permukaan serangan terbatas pada:
6
+
7
+ - Sistem file lokal (jalur file yang diteruskan ke alat)
8
+ - Binary whisper-cli.exe dan dependensinya
9
+ - Koneksi Claude Desktop MCP (hanya IPC lokal)
10
+ - Teks transkrip yang dikembalikan dalam respons alat (lihat Arsitektur Privasi di bawah)
11
+
12
+ ## Arsitektur Privasi
13
+
14
+ **File audio tidak pernah meninggalkan mesin Anda.** Jaminan ini bersifat tanpa syarat.
15
+
16
+ **Teks transkrip mungkin meninggalkan mesin Anda** dalam mode standar. Saat respons alat menyertakan teks transkrip, teks tersebut diproses oleh API Claude. Ini adalah perilaku MCP standar tetapi menciptakan celah antara filosofi desain "utamakan lokal" alat dan aliran data aktual bagi pengguna yang menangani konten yang diatur atau rahasia.
17
+
18
+ **Mode privasi** (`WHISPER_PRIVACY_MODE=true` atau `privacy_mode=true` per-panggilan) membatasi semua respons alat hanya ke metadata — tidak ada teks transkrip yang pernah dikembalikan ke API Claude. Ini adalah konfigurasi yang tepat untuk penerapan medis, hukum, keuangan, dan perusahaan.
19
+
20
+ **Gerbang mode privasi:** saat mode privasi aktif, konfirmasi pengungkapan ditampilkan sebelum setiap operasi transkripsi. Ini disengaja dan tidak dapat dilewati — kepatuhan regulasi mengharuskan persetujuan yang diinformasikan per-operasi.
21
+
22
+ **Gerbang persetujuan:** dalam mode standar, pengungkapan satu kali per sesi ditampilkan sebelum teks transkrip apa pun dikembalikan ke API untuk pertama kali. Atur `WHISPER_CONSENT_ACKNOWLEDGED=true` di konfigurasi Anda untuk melewatinya bagi konten yang tidak sensitif.
23
+
24
+ Lihat [PRIVACY.md](PRIVACY.md) untuk deskripsi arsitektur privasi lengkap, panduan kerangka kepatuhan (HIPAA, GDPR, hak istimewa pengacara-klien, FERPA, SOX, PCI-DSS), dan instruksi konfigurasi.
25
+
26
+ ## Verifikasi Binary
27
+
28
+ Untuk memverifikasi integritas binary `whisper-cli.exe` dalam rilis pre-built, periksa hash SHA256-nya di PowerShell:
29
+
30
+ ```powershell
31
+ Get-FileHash "C:\whisper\Release\whisper-cli.exe" -Algorithm SHA256
32
+ ```
33
+
34
+ Hash yang diharapkan untuk setiap binary rilis diterbitkan di [halaman rilis](https://github.com/eviscerations/whisper-windows-mcp/releases). Jangan gunakan binary yang hashnya tidak cocok.
35
+
36
+ ## Versi yang Didukung
37
+
38
+ Perbaikan keamanan hanya diterapkan pada versi yang diterbitkan terbaru.
39
+
40
+ | Versi | Didukung |
41
+ |---|---|
42
+ | 2.x (terbaru) | ✅ |
43
+ | 1.x | ❌ |
44
+
45
+ ## Melaporkan Kerentanan
46
+
47
+ **Jangan buka issue publik untuk kerentanan keamanan.**
48
+
49
+ Gunakan pelaporan kerentanan pribadi GitHub:
50
+ 1. Buka [tab Security](https://github.com/eviscerations/whisper-windows-mcp/security)
51
+ 2. Klik "Report a vulnerability"
52
+ 3. Jelaskan masalah dengan detail yang cukup untuk mereproduksinya
53
+
54
+ Anda akan menerima respons dalam 7 hari. Jika kerentanan dikonfirmasi, perbaikan akan dirilis sesegera mungkin dan Anda akan dikreditkan dalam catatan rilis jika Anda menginginkannya.
55
+
56
+ ## Sandbox & persetujuan
57
+
58
+ whisper-windows-mcp adalah **alat lokal, pengguna tunggal, yang dikendalikan oleh pemilik mesin melalui Claude Desktop.** Model ancamannya adalah pemilik yang menjalankannya di mesin mereka sendiri — bukan penyebaran yang tidak terpercaya, multi-penyewa, atau terekspos ke jaringan.
59
+
60
+ - **Sandboxing:** tidak ada, secara desain. `whisper-cli.exe` berjalan pada tingkat izin pemilik sendiri, sama seperti server MCP lokal mana pun. Isolasi tingkat OS bukanlah mitigasi di sini; cakupan penggunaanlah mitigasinya — **jangan paparkan server ini ke akses jaringan yang tidak terpercaya** (lihat "Injeksi jalur file" di bawah).
61
+ - **Persetujuan berlapis, bukan berbasis sandbox:**
62
+ 1. **Persetujuan host** — lapisan MCP Claude Desktop mengatur pemanggilan alat.
63
+ 2. **Gerbang persetujuan / privasi** — konfirmasi eksplisit diperlukan sebelum teks transkrip apa pun meninggalkan mesin menuju API Claude; `WHISPER_PRIVACY_MODE` / `privacy_mode` per-panggilan hanya mengembalikan metadata untuk konten yang diatur. Gerbang dikunci per operasi (alat + argumen). Lihat [PRIVACY.md](PRIVACY.md).
64
+ 3. **Validasi input** — jalur traversal direktori dan UNC ditolak; `switch_model` dibatasi pada direktori model yang dikonfigurasi; `download_model` dibatasi pada daftar yang diizinkan dari namespace Hugging Face terpercaya.
65
+
66
+ Alat ini **tidak** dirancang untuk dikendalikan oleh agen yang tidak terpercaya atau dijalankan sebagai infrastruktur bersama. Postur tersebut akan memerlukan sandbox OS/kontainer dan kebijakan egress — di luar cakupan alat transkripsi lokal pengguna tunggal.
67
+
68
+ ## Keputusan Desain yang Diketahui
69
+
70
+ - **Injeksi jalur file:** Alat menerima jalur file absolut dari Claude. Ini adalah desain yang disengaja — alat ini dimaksudkan untuk digunakan dengan Claude Desktop oleh pemilik mesin. Jangan paparkan server MCP ini ke akses jaringan yang tidak terpercaya.
71
+ - **Tidak ada sandboxing:** whisper-cli.exe berjalan dengan izin yang sama seperti Claude Desktop. Ini adalah standar untuk alat MCP lokal.
72
+ - **File sementara:** File WAV perantara ditulis ke `%TEMP%\whisper_tmp_*.wav` dan dihapus setelah transkripsi. File status tugas ditulis ke `%TEMP%\whisper-mcp-jobs\` dan dibersihkan secara otomatis setelah 7 hari saat server dimulai.
73
+ - **Konten transkrip:** Teks transkrip yang dikembalikan dalam respons alat diproses oleh API Claude dalam mode standar. Aktifkan `WHISPER_PRIVACY_MODE=true` atau teruskan `privacy_mode=true` per-panggilan untuk mencegah hal ini. Lihat [PRIVACY.md](PRIVACY.md).
74
+ - **Injeksi transkrip:** File audio dapat mengandung konten lisan yang, saat ditranskrip, menyerupai instruksi. Pertahanan bawaan Claude menangani hal ini. Server MCP itu sendiri menandai semua konten transkrip sebagai data yang tidak terpercaya dan tidak pernah menginterpretasikannya sebagai instruksi.
75
+ - **Unduhan model:** Alat `download_model` hanya mengunduh dari dua namespace Hugging Face terpercaya (`ggerganov/whisper.cpp` dan `ggml-org`). Pengalihan divalidasi terhadap daftar yang diizinkan sebelum diikuti. URL sembarang ditolak di tingkat kode. Unduhan yang terpotong/tidak lengkap ditolak (pemeriksaan Content-Length) sebelum file `.part` dipromosikan ke nama model.
76
+ - **Pergantian model:** `switch_model` hanya menerima file `.bin` dalam direktori model yang dikonfigurasi. Jalur di luarnya ditolak melalui kontainmen jalur ternormalisasi — direktori berprefiks saudara seperti `…\models-evil` tidak dapat memenuhi pemeriksaan — terlepas dari cara jalur ditentukan.
package/SECURITY.ja.md CHANGED
@@ -1,47 +1,76 @@
1
- # セキュリティポリシー
2
-
3
- ## スコープ
4
-
5
- whisper-windows-mcpはローカルファーストのツールです。すべての音声処理はマシン上で行われます — 音声・動画ファイルや個人データが外部サーバーに送信されることは一切ありません。攻撃対象は以下に限定されます:
6
-
7
- - ローカルファイルシステム(ツールに渡されるファイルパス)
8
- - whisper-cli.exeバイナリとその依存関係
9
- - Claude Desktop MCP接続(ローカルIPCのみ)
10
- - ツールレスポンスで返されるトランスクリプトテキスト(以下のプライバシーアーキテクチャを参照)
11
-
12
- ## プライバシーアーキテクチャ
13
-
14
- **音声ファイルはマシンの外に出ることは一切ありません。** この保証は無条件です。
15
-
16
- **トランスクリプトテキストはマシンの外に出る可能性があります。** ツールレスポンスにトランスクリプトテキストが含まれる場合、そのテキストはClaudeのAPIで処理されます。これは標準的なMCPの動作ですが、規制対象または機密性の高いコンテンツを扱うユーザーにとって、ツールの「ローカルファースト」の設計思想と実際のデータフローの間にギャップが生じます。
17
-
18
- トランスクリプトテキストをツールレスポンスに含めず、メタデータのみ(ファイル名、時間、単語数)を返す`WHISPER_PRIVACY_MODE`環境変数が将来のリリースで計画されています。これは医療、法律、財務、および企業向けデプロイメントの想定される設定です。
19
-
20
- コンプライアンスフレームワーク別の詳細なガイダンス(HIPAA、GDPR、弁護士・依頼者特権、FERPA、SOX、PCI-DSS)については[PRIVACY.md](PRIVACY.md)を参照してください。
21
-
22
- ## サポートバージョン
23
-
24
- セキュリティ修正は最新の公開バージョンのみに適用されます。
25
-
26
- | バージョン | サポート |
27
- |---|---|
28
- | 2.x(最新) | ✅ |
29
- | 1.x | ❌ |
30
-
31
- ## 脆弱性の報告
32
-
33
- **セキュリティ上の脆弱性には公開Issueを使用しないでください。**
34
-
35
- GitHubのプライベート脆弱性レポートを使用してください:
36
- 1. [Securityタブ](https://github.com/eviscerations/whisper-windows-mcp/security)にアクセス
37
- 2. 「Report a vulnerability」をクリック
38
- 3. 再現できる十分な詳細を含めて問題を説明
39
-
40
- 7日以内に返答します。脆弱性が確認された場合、できる限り早急に修正をリリースし、ご希望の場合はリリースノートにクレジットを記載します。
41
-
42
- ## 既知の設計上の決定
43
-
44
- - **ファイルパスインジェクション:** ツールはClaudeから絶対ファイルパスを受け取ります。これは意図的な設計です — このツールはマシンの所有者がClaude Desktopとともに使用することを目的としています。このMCPサーバーを信頼できないネットワークアクセスに公開しないでください。
45
- - **サンドボックスなし:** whisper-cli.exeはClaude Desktopと同じ権限で実行されます。これはローカルMCPツールの標準的な動作です。
46
- - **一時ファイル:** 中間WAVファイルは`%TEMP%\whisper_tmp_*.wav`に書き込まれ、文字起こし後に削除されます。ジョブ状態ファイルは`%TEMP%\whisper-mcp-jobs\`に書き込まれ、手動でクリアするか、計画中の自動クリーンアップ機能がリリースされるまで残ります。
47
- - **トランスクリプトコンテンツ:** ツールレスポンスで返されるトランスクリプトテキストはClaudeのAPIで処理されます。これは文書化されており、将来のリリースで`WHISPER_PRIVACY_MODE`によって対応される予定です。詳細は[PRIVACY.md](PRIVACY.md)を参照してください。
1
+ # セキュリティポリシー
2
+
3
+ ## スコープ
4
+
5
+ whisper-windows-mcpはローカルファーストのツールです。すべての音声処理はマシン上で行われます — 音声・動画ファイルや個人データが外部サーバーに送信されることは一切ありません。攻撃対象領域は以下に限定されます:
6
+
7
+ - ローカルファイルシステム(ツールに渡されるファイルパス)
8
+ - whisper-cli.exeバイナリとその依存関係
9
+ - Claude Desktop MCP接続(ローカルIPCのみ)
10
+ - ツールレスポンスで返されるトランスクリプトテキスト(以下のプライバシーアーキテクチャを参照)
11
+
12
+ ## プライバシーアーキテクチャ
13
+
14
+ **音声ファイルはマシンの外に出ることは一切ありません。** この保証は無条件です。
15
+
16
+ **トランスクリプトテキストはマシンの外に出る可能性があります**(標準モードの場合)。ツールレスポンスにトランスクリプトテキストが含まれる場合、そのテキストはClaudeのAPIで処理されます。これは標準的なMCPの動作ですが、規制対象または機密性の高いコンテンツを扱うユーザーにとって、ツールの「ローカルファースト」の設計思想と実際のデータフローの間にギャップが生じます。
17
+
18
+ **プライバシーモード**(`WHISPER_PRIVACY_MODE=true`またはper-callで`privacy_mode=true`)は、すべてのツールレスポンスをメタデータのみに制限します — トランスクリプトテキストがClaudeのAPIに返されることは一切ありません。これは医療、法律、財務、および企業向けデプロイメントに適した設定です。
19
+
20
+ **プライバシーモードゲート:** プライバシーモードが有効な場合、すべての文字起こし操作の前に明示的な確認開示が表示されます。これは意図的な動作であり回避できません — 規制へのコンプライアンスには操作ごとのインフォームドコンセントが必要です。
21
+
22
+ **同意ゲート:** 標準モードでは、セッション内で初めてトランスクリプトテキストがAPIに返される前に、一度だけセッション開示が表示されます。機密性のないコンテンツに対してこれを抑制するには、設定に`WHISPER_CONSENT_ACKNOWLEDGED=true`を設定してください。
23
+
24
+ 完全なプライバシーアーキテクチャの説明、コンプライアンスフレームワークのガイダンス(HIPAA、GDPR、弁護士・依頼者特権、FERPA、SOX、PCI-DSS)、および設定手順については[PRIVACY.md](PRIVACY.md)を参照してください。
25
+
26
+ ## バイナリ検証
27
+
28
+ プリビルドリリースの`whisper-cli.exe`バイナリの整合性を確認するには、PowerShellでSHA256ハッシュを確認してください:
29
+
30
+ ```powershell
31
+ Get-FileHash "C:\whisper\Release\whisper-cli.exe" -Algorithm SHA256
32
+ ```
33
+
34
+ 各リリースバイナリの期待されるハッシュは[リリースページ](https://github.com/eviscerations/whisper-windows-mcp/releases)に公開されています。ハッシュが一致しないバイナリは使用しないでください。
35
+
36
+ ## サポートバージョン
37
+
38
+ セキュリティ修正は最新の公開バージョンのみに適用されます。
39
+
40
+ | バージョン | サポート |
41
+ |---|---|
42
+ | 2.x(最新) | ✅ |
43
+ | 1.x | ❌ |
44
+
45
+ ## 脆弱性の報告
46
+
47
+ **セキュリティ上の脆弱性には公開Issueを使用しないでください。**
48
+
49
+ GitHubのプライベート脆弱性レポートを使用してください:
50
+ 1. [Securityタブ](https://github.com/eviscerations/whisper-windows-mcp/security)にアクセス
51
+ 2. 「Report a vulnerability」をクリック
52
+ 3. 再現できる十分な詳細を含めて問題を説明
53
+
54
+ 7日以内に返答します。脆弱性が確認された場合、できる限り早急に修正をリリースし、ご希望の場合はリリースノートにクレジットを記載します。
55
+
56
+ ## サンドボックスと承認
57
+
58
+ whisper-windows-mcpは、**Claude Desktopを通じてマシンの所有者が操作する、ローカルでシングルユーザーのツールです。** その脅威モデルは、所有者が自分自身のマシン上で実行することであり — 信頼できない、マルチテナント、またはネットワークに公開された配備ではありません。
59
+
60
+ - **サンドボックス:** 設計上、ありません。`whisper-cli.exe`は、他のローカルMCPサーバーと同様に、所有者自身の権限レベルで実行されます。ここでの緩和策はOSレベルの分離ではなく、使用範囲です — **このサーバーを信頼できないネットワークアクセスに公開しないでください**(下記の「ファイルパスインジェクション」を参照)。
61
+ - **承認はサンドボックスベースではなく、階層化されています:**
62
+ 1. **ホストの承認** — Claude DesktopのMCPレイヤーがツールの呼び出しを制御します。
63
+ 2. **同意 / プライバシーゲート** — トランスクリプトテキストがマシンからClaudeのAPIへ送信される前に、明示的な確認が必要です。`WHISPER_PRIVACY_MODE` / per-callの`privacy_mode`は、規制対象コンテンツに対してメタデータのみを返します。ゲートは操作ごと(ツール+引数)にキー化されます。[PRIVACY.md](PRIVACY.md)を参照してください。
64
+ 3. **入力検証** — ディレクトリトラバーサルおよびUNCパスは拒否されます。`switch_model`は設定されたモデルディレクトリに封じ込められ、`download_model`は信頼できるHugging Faceネームスペースのアローリストに制限されます。
65
+
66
+ このツールは、信頼できないエージェントによって操作されたり、共有インフラとして実行されたりするようには設計されて**いません**。そのような体制にはOS/コンテナのサンドボックスとエグレスポリシーが必要であり — ローカルでシングルユーザーの文字起こしツールの範囲外です。
67
+
68
+ ## 既知の設計上の決定
69
+
70
+ - **ファイルパスインジェクション:** ツールはClaudeから絶対ファイルパスを受け取ります。これは意図的な設計です — このツールはマシンの所有者がClaude Desktopとともに使用することを目的としています。このMCPサーバーを信頼できないネットワークアクセスに公開しないでください。
71
+ - **サンドボックスなし:** whisper-cli.exeはClaude Desktopと同じ権限で実行されます。これはローカルMCPツールの標準的な動作です。
72
+ - **一時ファイル:** 中間WAVファイルは`%TEMP%\whisper_tmp_*.wav`に書き込まれ、文字起こし後に削除されます。ジョブ状態ファイルは`%TEMP%\whisper-mcp-jobs\`に書き込まれ、サーバー起動時に7日以上経過したファイルが自動的にクリーンアップされます。
73
+ - **トランスクリプトコンテンツ:** 標準モードでツールレスポンスに返されるトランスクリプトテキストはClaudeのAPIで処理されます。これを防ぐには`WHISPER_PRIVACY_MODE=true`を有効にするか、per-callで`privacy_mode=true`を渡してください。詳細は[PRIVACY.md](PRIVACY.md)を参照してください。
74
+ - **トランスクリプトインジェクション:** 音声ファイルには、文字起こしされると指示に似た内容が含まれる可能性があります。Claudeの組み込み防御機能がこれを処理します。MCPサーバー自体はすべてのトランスクリプトコンテンツを信頼できないデータとしてマークし、指示として解釈することは一切ありません。
75
+ - **モデルダウンロード:** `download_model`ツールは2つの信頼できるHugging Faceネームスペース(`ggerganov/whisper.cpp`と`ggml-org`)からのみダウンロードします。リダイレクトはアローリストに対して検証されてから追跡されます。任意のURLはコードレベルで拒否されます。切り詰められた/不完全なダウンロードは、`.part`ファイルがモデル名に昇格される前に拒否されます(Content-Lengthチェック)。
76
+ - **モデル切り替え:** `switch_model`は設定されたモデルディレクトリ内の`.bin`ファイルのみを受け付けます。そのディレクトリ外のパスは、正規化されたパス封じ込めによって拒否されます — `…\models-evil`のような兄弟プレフィックスのディレクトリはチェックを満たせません — パスの指定方法に関わらず拒否されます。
package/SECURITY.ko.md CHANGED
@@ -1,47 +1,76 @@
1
- # 보안 정책
2
-
3
- ## 범위
4
-
5
- whisper-windows-mcp는 로컬 우선 도구입니다. 모든 음성 처리는 머신에서 이루어집니다 — 음성, 동영상 파일이나 개인 데이터가 어떤 서버에도 전송되지 않습니다. 공격 표면은 다음으로 제한됩니다:
6
-
7
- - 로컬 파일시스템 (도구에 전달된 파일 경로)
8
- - whisper-cli.exe 바이너리와 그 의존성
9
- - Claude Desktop MCP 연결 (로컬 IPC만)
10
- - 도구 응답에 반환된 전사 텍스트 (아래 개인 정보 아키텍처 참고)
11
-
12
- ## 개인 정보 아키텍처
13
-
14
- **음성 파일은 절대 머신을 떠나지 않습니다.** 이 보장은 무조건적입니다.
15
-
16
- **전사 텍스트는 머신을 떠날 수 있습니다.** 도구 응답에 전사 텍스트가 포함되면 해당 텍스트는 Claude의 API에서 처리됩니다. 이는 표준 MCP 동작이지만 규제 대상 또는 기밀 콘텐츠를 처리하는 사용자에게는 도구의 "로컬 우선" 설계 철학과 실제 데이터 흐름 사이에 격차를 만듭니다.
17
-
18
- 모든 도구 응답을 메타데이터만으로 제한하는 `WHISPER_PRIVACY_MODE` 환경 변수가 계획되어 있습니다 — Claude의 API에 전사 텍스트가 반환되지 않습니다. 이것이 의료, 법률, 재정, 기업 배포에 대한 계획된 솔루션입니다.
19
-
20
- 전체 개인 정보 아키텍처 설명, 컴플라이언스 프레임워크 안내(HIPAA, GDPR, 변호사-의뢰인 특권, FERPA, SOX, PCI-DSS) 및 설정 지침은 [PRIVACY.md](PRIVACY.md)를 참고하세요.
21
-
22
- ## 지원되는 버전
23
-
24
- 보안 수정은 최신 게시된 버전에만 적용됩니다.
25
-
26
- | 버전 | 지원됨 |
27
- |---|---|
28
- | 2.x (최신) | ✅ |
29
- | 1.x | ❌ |
30
-
31
- ## 취약점 보고
32
-
33
- **보안 취약점에 대해 공개 이슈를 열지 마세요.**
34
-
35
- GitHub의 비공개 취약점 보고를 사용하세요:
36
- 1. [Security 탭](https://github.com/eviscerations/whisper-windows-mcp/security)으로 이동
37
- 2. "Report a vulnerability" 클릭
38
- 3. 재현할 수 있는 충분한 세부 정보로 문제를 설명
39
-
40
- 7일 이내에 응답을 받을 수 있습니다. 취약점이 확인되면 가능한 한 빨리 수정 사항을 릴리스하고 원하시면 릴리스 노트에 크레딧을 기재합니다.
41
-
42
- ## 알려진 설계 결정 사항
43
-
44
- - **파일 경로 인젝션:** 도구는 Claude로부터 절대 파일 경로를 받습니다. 이것은 의도된 설계입니다 — 이 도구는 머신 소유자가 Claude Desktop과 함께 사용하도록 만들어졌습니다. 이 MCP 서버를 신뢰할 수 없는 네트워크 접근에 노출하지 마세요.
45
- - **샌드박싱 없음:** whisper-cli.exe는 Claude Desktop과 동일한 권한으로 실행됩니다. 이것은 로컬 MCP 도구의 표준 동작입니다.
46
- - **임시 파일:** 중간 WAV 파일은 `%TEMP%\whisper_tmp_*.wav`에 작성되고 전사 후 삭제됩니다. 작업 상태 파일은 `%TEMP%\whisper-mcp-jobs\`에 작성되며 수동으로 지우거나 계획된 자동 정리 기능이 출시될 때까지 유지됩니다.
47
- - **전사 콘텐츠:** 도구 응답에 반환된 전사 텍스트는 Claude의 API에서 처리됩니다. 이것은 문서화되어 있으며 향후 릴리스에서 `WHISPER_PRIVACY_MODE`를 통해 해결될 예정입니다. [PRIVACY.md](PRIVACY.md)를 참고하세요.
1
+ # 보안 정책
2
+
3
+ ## 범위
4
+
5
+ whisper-windows-mcp는 로컬 우선 도구입니다. 모든 음성 처리는 머신에서 이루어집니다 — 음성, 동영상 파일이나 개인 데이터가 어떤 서버에도 전송되지 않습니다. 공격 표면은 다음으로 제한됩니다:
6
+
7
+ - 로컬 파일시스템 (도구에 전달된 파일 경로)
8
+ - whisper-cli.exe 바이너리와 그 의존성
9
+ - Claude Desktop MCP 연결 (로컬 IPC만)
10
+ - 도구 응답에 반환된 전사 텍스트 (아래 개인 정보 아키텍처 참고)
11
+
12
+ ## 개인 정보 아키텍처
13
+
14
+ **음성 파일은 절대 머신을 떠나지 않습니다.** 이 보장은 무조건적입니다.
15
+
16
+ **전사 텍스트는 기본 모드에서 머신을 떠날 수 있습니다.** 도구 응답에 전사 텍스트가 포함되면 해당 텍스트는 Claude의 API에서 처리됩니다. 이는 표준 MCP 동작이지만 규제 대상 또는 기밀 콘텐츠를 처리하는 사용자에게는 도구의 "로컬 우선" 설계 철학과 실제 데이터 흐름 사이에 격차를 만듭니다.
17
+
18
+ **개인 정보 모드** (`WHISPER_PRIVACY_MODE=true` 또는 호출별 `privacy_mode=true`)는 모든 도구 응답을 메타데이터만으로 제한합니다 — 전사 텍스트가 Claude의 API에 반환되지 않습니다. 이것이 의료, 법률, 재정, 기업 배포에 대한 올바른 설정입니다.
19
+
20
+ **개인 정보 모드 게이트:** 개인 정보 모드가 활성화된 경우 모든 전사 작업 전에 명시적 확인 공개가 표시됩니다. 이것은 의도된 동작이며 우회할 수 없습니다 — 규정 준수에는 작업별 사전 동의가 필요합니다.
21
+
22
+ **동의 게이트:** 기본 모드에서는 세션당 처음으로 전사 텍스트가 API에 반환되기 전에 일회성 세션 공개가 표시됩니다. 민감하지 않은 콘텐츠에 대해 이를 억제하려면 설정에서 `WHISPER_CONSENT_ACKNOWLEDGED=true`를 설정하세요.
23
+
24
+ 전체 개인 정보 아키텍처 설명, 컴플라이언스 프레임워크 안내(HIPAA, GDPR, 변호사-의뢰인 특권, FERPA, SOX, PCI-DSS) 및 설정 지침은 [PRIVACY.md](PRIVACY.md)를 참고하세요.
25
+
26
+ ## 바이너리 검증
27
+
28
+ 사전 빌드된 릴리스의 `whisper-cli.exe` 바이너리 무결성을 확인하려면 PowerShell에서 SHA256 해시를 확인하세요:
29
+
30
+ ```powershell
31
+ Get-FileHash "C:\whisper\Release\whisper-cli.exe" -Algorithm SHA256
32
+ ```
33
+
34
+ 각 릴리스 바이너리에 대한 예상 해시는 [릴리스 페이지](https://github.com/eviscerations/whisper-windows-mcp/releases)에 게시됩니다. 해시가 일치하지 않는 바이너리는 사용하지 마세요.
35
+
36
+ ## 지원되는 버전
37
+
38
+ 보안 수정은 최신 게시된 버전에만 적용됩니다.
39
+
40
+ | 버전 | 지원됨 |
41
+ |---|---|
42
+ | 2.x (최신) | ✅ |
43
+ | 1.x | ❌ |
44
+
45
+ ## 취약점 보고
46
+
47
+ **보안 취약점에 대해 공개 이슈를 열지 마세요.**
48
+
49
+ GitHub의 비공개 취약점 보고를 사용하세요:
50
+ 1. [Security 탭](https://github.com/eviscerations/whisper-windows-mcp/security)으로 이동
51
+ 2. "Report a vulnerability" 클릭
52
+ 3. 재현할 수 있는 충분한 세부 정보로 문제를 설명
53
+
54
+ 7일 이내에 응답을 받을 수 있습니다. 취약점이 확인되면 가능한 한 빨리 수정 사항을 릴리스하고 원하시면 릴리스 노트에 크레딧을 기재합니다.
55
+
56
+ ## 샌드박스 및 승인
57
+
58
+ whisper-windows-mcp는 **Claude Desktop을 통해 머신 소유자가 구동하는 로컬, 단일 사용자 도구입니다.** 위협 모델은 소유자가 자신의 머신에서 실행하는 것이며 — 신뢰할 수 없거나, 멀티 테넌트이거나, 네트워크에 노출된 배포가 아닙니다.
59
+
60
+ - **샌드박싱:** 설계상 없습니다. `whisper-cli.exe`는 다른 로컬 MCP 서버와 마찬가지로 소유자 자신의 권한 수준에서 실행됩니다. 여기서의 완화책은 OS 수준 격리가 아니라 사용 범위입니다 — **이 서버를 신뢰할 수 없는 네트워크 접근에 노출하지 마세요**(아래 "파일 경로 인젝션" 참고).
61
+ - **승인은 샌드박스 기반이 아니라 계층적입니다:**
62
+ 1. **호스트 승인** — Claude Desktop의 MCP 레이어가 도구 호출을 제어합니다.
63
+ 2. **동의 / 개인 정보 게이트** — 전사 텍스트가 머신에서 Claude의 API로 나가기 전에 명시적 확인이 필요합니다. `WHISPER_PRIVACY_MODE` / 호출별 `privacy_mode`는 규제 대상 콘텐츠에 대해 메타데이터만 반환합니다. 게이트는 작업별(도구 + 인수)로 키 지정됩니다. [PRIVACY.md](PRIVACY.md)를 참고하세요.
64
+ 3. **입력 검증** — 디렉터리 트래버설 및 UNC 경로는 거부됩니다. `switch_model`은 설정된 모델 디렉터리로 제한되고, `download_model`은 신뢰할 수 있는 Hugging Face 네임스페이스 허용 목록으로 제한됩니다.
65
+
66
+ 이 도구는 신뢰할 수 없는 에이전트가 구동하거나 공유 인프라로 실행되도록 설계되지 **않았습니다**. 그러한 태세는 OS/컨테이너 샌드박스와 이그레스 정책을 요구하며 — 로컬 단일 사용자 전사 도구의 범위를 벗어납니다.
67
+
68
+ ## 알려진 설계 결정 사항
69
+
70
+ - **파일 경로 인젝션:** 도구는 Claude로부터 절대 파일 경로를 받습니다. 이것은 의도된 설계입니다 — 이 도구는 머신 소유자가 Claude Desktop과 함께 사용하도록 만들어졌습니다. 이 MCP 서버를 신뢰할 수 없는 네트워크 접근에 노출하지 마세요.
71
+ - **샌드박싱 없음:** whisper-cli.exe는 Claude Desktop과 동일한 권한으로 실행됩니다. 이것은 로컬 MCP 도구의 표준 동작입니다.
72
+ - **임시 파일:** 중간 WAV 파일은 `%TEMP%\whisper_tmp_*.wav`에 작성되고 전사 후 삭제됩니다. 작업 상태 파일은 `%TEMP%\whisper-mcp-jobs\`에 작성되며 서버 시작 시 7일 후 자동으로 정리됩니다.
73
+ - **전사 콘텐츠:** 도구 응답에 반환된 전사 텍스트는 기본 모드에서 Claude의 API에서 처리됩니다. 이를 방지하려면 `WHISPER_PRIVACY_MODE=true`를 설정하거나 호출별로 `privacy_mode=true`를 전달하세요. [PRIVACY.md](PRIVACY.md)를 참고하세요.
74
+ - **전사 인젝션:** 음성 파일에는 전사 시 지시처럼 보이는 발화 내용이 포함될 수 있습니다. Claude의 내장 방어 기능이 이를 처리합니다. MCP 서버 자체는 모든 전사 콘텐츠를 신뢰할 수 없는 데이터로 표시하며 지시로 해석하지 않습니다.
75
+ - **모델 다운로드:** `download_model` 도구는 두 개의 신뢰할 수 있는 Hugging Face 네임스페이스(`ggerganov/whisper.cpp` 및 `ggml-org`)에서만 다운로드합니다. 리다이렉트는 허용 목록에 대해 검증된 후 따릅니다. 임의의 URL은 코드 수준에서 거부됩니다. 잘리거나 불완전한 다운로드는 `.part` 파일이 모델 이름으로 승격되기 전에 거부됩니다(Content-Length 검사).
76
+ - **모델 전환:** `switch_model`은 설정된 모델 디렉터리 내의 `.bin` 파일만 허용합니다. 해당 디렉터리 외부의 경로는 정규화된 경로 격리를 통해 거부됩니다 — `…\models-evil`와 같은 형제 접두사 디렉터리는 검사를 통과할 수 없습니다 — 경로가 지정된 방식에 관계없이 거부됩니다.
package/SECURITY.md CHANGED
@@ -13,12 +13,26 @@ whisper-windows-mcp is a local-first tool. All audio processing happens on your
13
13
 
14
14
  **Audio files never leave your machine.** This guarantee is unconditional.
15
15
 
16
- **Transcript text may leave your machine.** When a tool response includes transcript text, that text is processed by Claude's API. This is standard MCP behavior but creates a gap between the tool's "local-first" design philosophy and actual data flow for users handling regulated or confidential content.
16
+ **Transcript text may leave your machine** in standard mode. When a tool response includes transcript text, that text is processed by Claude's API. This is standard MCP behavior but creates a gap between the tool's "local-first" design philosophy and actual data flow for users handling regulated or confidential content.
17
17
 
18
- A `WHISPER_PRIVACY_MODE` environment variable is planned that will restrict all tool responses to metadata only — no transcript text returned to Claude's API. This is the intended solution for medical, legal, financial, and corporate deployments.
18
+ **Privacy mode** (`WHISPER_PRIVACY_MODE=true` or `privacy_mode=true` per-call) restricts all tool responses to metadata only — no transcript text is ever returned to Claude's API. This is the correct configuration for medical, legal, financial, and corporate deployments.
19
+
20
+ **Privacy mode gate:** when privacy mode is active, an explicit confirmation disclosure is shown before every transcription operation. This is intentional and cannot be bypassed — regulatory compliance requires per-operation informed consent.
21
+
22
+ **Consent gate:** in standard mode, a one-time session disclosure is shown before any transcript text is returned to the API for the first time. Set `WHISPER_CONSENT_ACKNOWLEDGED=true` in your config to suppress this for non-sensitive content.
19
23
 
20
24
  See [PRIVACY.md](PRIVACY.md) for the full privacy architecture description, compliance framework guidance (HIPAA, GDPR, attorney-client privilege, FERPA, SOX, PCI-DSS), and configuration instructions.
21
25
 
26
+ ## Binary Verification
27
+
28
+ To verify the integrity of the `whisper-cli.exe` binary in the pre-built release, check its SHA256 hash in PowerShell:
29
+
30
+ ```powershell
31
+ Get-FileHash "C:\whisper\Release\whisper-cli.exe" -Algorithm SHA256
32
+ ```
33
+
34
+ The expected hash for each release binary is published on the [releases page](https://github.com/eviscerations/whisper-windows-mcp/releases). Do not use a binary whose hash does not match.
35
+
22
36
  ## Supported versions
23
37
 
24
38
  Security fixes are applied to the latest published version only.
@@ -39,9 +53,24 @@ Use GitHub's private vulnerability reporting:
39
53
 
40
54
  You'll receive a response within 7 days. If the vulnerability is confirmed, a fix will be released as soon as practical and you'll be credited in the release notes if you wish.
41
55
 
56
+ ## Sandboxing & approvals
57
+
58
+ whisper-windows-mcp is a **local, single-user tool driven by the machine's owner through Claude Desktop.** Its threat model is the owner running it on their own machine — not an untrusted, multi-tenant, or network-exposed deployment.
59
+
60
+ - **Sandboxing:** none, by design. `whisper-cli.exe` runs at the owner's own permission level, the same as any local MCP server. OS-level isolation is not the mitigation here; scope of use is — **do not expose this server to untrusted network access** (see "File path injection" below).
61
+ - **Approvals are layered, not sandbox-based:**
62
+ 1. **Host approval** — Claude Desktop's MCP layer gates tool invocation.
63
+ 2. **Consent / privacy gates** — an explicit confirmation is required before any transcript text leaves the machine for Claude's API; `WHISPER_PRIVACY_MODE` / per-call `privacy_mode` returns metadata only for regulated content. The gate is keyed per operation (tool + arguments). See [PRIVACY.md](PRIVACY.md).
64
+ 3. **Input validation** — directory-traversal and UNC paths are rejected; `switch_model` is contained to the configured models directory; `download_model` is restricted to an allowlist of trusted Hugging Face namespaces.
65
+
66
+ This tool is **not** designed to be driven by an untrusted agent or run as shared infrastructure. That posture would call for OS/container sandboxing and an egress policy — out of scope for a local single-user transcription tool.
67
+
42
68
  ## Known design decisions
43
69
 
44
70
  - **File path injection:** Tools accept absolute file paths from Claude. This is by design — the tool is intended to be used with Claude Desktop by the machine's owner. Do not expose this MCP server to untrusted network access.
45
71
  - **No sandboxing:** whisper-cli.exe runs with the same permissions as Claude Desktop. This is standard for local MCP tools.
46
- - **Temp files:** Intermediate WAV files are written to `%TEMP%\whisper_tmp_*.wav` and deleted after transcription. Job state files are written to `%TEMP%\whisper-mcp-jobs\` and persist until manually cleared or until the planned auto-cleanup feature ships.
47
- - **Transcript content:** Transcript text returned in tool responses is processed by Claude's API. This is documented and will be addressable via `WHISPER_PRIVACY_MODE` in a future release. See [PRIVACY.md](PRIVACY.md).
72
+ - **Temp files:** Intermediate WAV files are written to `%TEMP%\whisper_tmp_*.wav` and deleted after transcription. Job state files are written to `%TEMP%\whisper-mcp-jobs\` and automatically cleaned up after 7 days on server startup.
73
+ - **Transcript content:** Transcript text returned in tool responses is processed by Claude's API in standard mode. Enable `WHISPER_PRIVACY_MODE=true` or pass `privacy_mode=true` per-call to prevent this. See [PRIVACY.md](PRIVACY.md).
74
+ - **Transcript injection:** Audio files can contain spoken content that, when transcribed, resembles instructions. Claude's built-in defenses handle this. The MCP server itself marks all transcript content as untrusted data and never interprets it as instructions.
75
+ - **Model downloads:** The `download_model` tool only downloads from two trusted Hugging Face namespaces (`ggerganov/whisper.cpp` and `ggml-org`). Redirects are validated against an allowlist before following, and arbitrary URLs are rejected at the code level. Truncated/incomplete downloads are rejected (Content-Length check) before a `.part` file is promoted to the model name.
76
+ - **Model switching:** `switch_model` only accepts `.bin` files within the configured models directory. Paths outside it are rejected via normalized path containment — a sibling-prefix directory such as `…\models-evil` cannot satisfy the check — regardless of how the path is specified.