Saltar al contenido
Founders$49 única vez → 2 años de Pro ($98 de valor)Ser Founder →
ClauLock

SECRETOS LOCALES · CLAUDE CODE · MACOS · LINUX · WINDOWS

Que Claude use tus secretos, no los vea.

MCP-nativo. Local-first. Cero telemetría. Cripto Apache-2.0.

@tu/clsec — ~/.clsec

# Claude generates this in the conversation:
$ curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" api.github.com/user

# PreToolUse hook rewrites to (transcript keeps the placeholder):
$ clsec-exec -- curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" api.github.com/user

# stdout returned to Claude (scrubbed):
{"login":"octocat","id":42,"public_repos":17}
curl -fsSL https://claulock.com/install.sh | sh

macOS 13+ · Apple Silicon / Intel · verifica minisign + cosign antes de extraer

v0.6.0 arrastrar a Aplicaciones · wizard automático · menu-bar + Dock Novedades →

Superficies de fuga enumeradas
5 superficies de fuga
Llamadas de red del daemon
0 llamadas de telemetría
Plataformas soportadas
3 plataformas
Licencia de la cripto
Apache-2.0 cripto core

FUNCIONA CON

Cualquier cosa que hable MCP o shell hooks. ¿Falta un cliente? Abre un issue.

QUÉ ES CLAULOCK

Un socket local entre Claude y tus secretos.

Cinco garantías que se sostienen por la forma del sistema, no por promesa.

CÓMO FUNCIONA

Tres hooks, un socket, cero fugas.

El invariante — Claude referencia un secreto por nombre, nunca por valor — se aplica en tres capas. Las tres tienen que sostenerse. Probamos el invariante en CI en cada push.

PASO 1 — HOOK PRETOOLUSE

Reescribe el comando antes de que corra.

# Claude genera este comando:
curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" api.github.com/user

# El hook PreToolUse lo reescribe a:
clsec-exec -- curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" api.github.com/user

El placeholder se queda en el transcript de Claude. El texto plano lo busca out-of-band clsec-exec y lo sustituye en fork/exec — sólo el proceso hijo lo ve.

PASO 2 — SERVIDOR MCP

Listar, describir, rotar. Nunca revelar.

# Tools que el servidor MCP expone:
secret_list   secret_describe   secret_rotate   secret_tag   secret_audit_log

# Tools que no existen (por forma de API — no removidas, nunca construidas):
secret_reveal   secret_read   secret_export_plaintext

El servidor MCP corre bajo rol Mcp. En la capa IPC, el daemon bloquea al rol Mcp de llamar Method::Resolve. Un binario MCP comprometido sigue sin poder pedir un valor.

PASO 3 — SCRUBBER POSTTOOLUSE

Redacta cualquier cosa que se filtre a stdout.

# Output crudo de un curl que imprimió el token:
Authenticated as octocat (token: ghp_live_AbCd1234EfGh5678…)

# Scrubbed antes de que el tool result vuelva a Claude:
Authenticated as octocat (token: [REDACTED:GITHUB_TOKEN])

Escaneo Aho-Corasick sobre stdout buscando cualquier valor resuelto durante la llamada. Las variantes base64, percent-encoded y hex se precomputan — fugas a través de JSON, URLs y debug traces se capturan automáticamente.

SERVIDOR MCP

ClauLock habla MCP nativamente.

ClauLock incluye un servidor MCP para que Claude pueda listar, describir y rotar tus secretos — pero nunca leer su texto plano. Lo agregas a tu claude_desktop_config.json y tus clientes MCP existentes lo levantan automáticamente. El comando clsec install lo hace por ti en las plataformas soportadas.

// ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "claulock": {
      "command": "clsec-mcp",
      "args": []
    }
  }
}

El servidor corre bajo rol Mcp y tiene prohibido Resolve a nivel del daemon. Expone secret_list, secret_describe, secret_rotate, secret_tag, secret_audit_log — y nada más.

Lo que filtra cada atajo, de verdad

Adónde van realmente tus secretos

Cinco patrones comunes, cuatro superficies de fuga. Las casillas en rojo son las que ya no puedes repintar después.

Patrón En el transcript de Claude En el historial del shell En la ventana de contexto del modelo Reversible después
Pegar en el chat Sí — literal No No
export VAR=… A veces Si Claude lee env Limpieza manual
Archivo .env Si Claude lo lee No Si Claude lo lee Borrado manual
Vault / 1Password CLI Si se exporta No Si se exporta Rotación
ClauLock Solo el placeholder No Solo el placeholder clsec rotate

El problema no es dónde guardas el secreto. Es el instante en que cruza al campo de visión del modelo. ClauLock hace ese cruce opcional.

Qué ve Claude vs qué se ejecuta

El mismo comando, cinco capas. El texto plano aparece en exactamente una línea — dentro del proceso hijo que realmente lo necesita, durante la vida de ese único execve.

Capa Contenido
Transcript de Claude curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" api.github.com/user
Llamada de la tool Bash curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" api.github.com/user
Tras el hook PreToolUse clsec-exec -- curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" …
Dentro de clsec-exec (sólo argv del hijo) curl -H "Authorization: Bearer ghp_live_…" api.github.com/user
stdout devuelto a Claude {"login":"octocat",…} (scrubbeado)

Sólo la cuarta línea contiene el valor real. Mira en qué se diferencia de Vault, Composio, Doppler y .env.

QUIERO QUE CLAUDE…

Todos los workflows que ya le diste a Claude, de forma segura

Estas son las credenciales que silenciosamente se acumulan en tus transcripts hoy. Con ClauLock, cada una se convierte en un placeholder que Claude puede referenciar pero no leer.

Visibilidad total

Cada vez que Claude tocó tus tokens

Escrito localmente, legible localmente. Cadena hash tamper-evident — una herramienta comprometida no puede editar la historia silenciosamente. Corre `clsec audit --since 24h` cuando quieras una copia.

clsec audit --since 24h
2026-04-26T19:42:13Z
GITHUB_TOKEN read clsec-exec
exit=0 ms=347 child=git push
2026-04-26T20:07:55Z
STRIPE_SK read clsec-exec
exit=0 ms=512 child=stripe listen
2026-04-26T20:15:09Z
STRIPE_SK revealed-blocked hook PostToolUse
scrubbed=1 stdout-bytes=42
2026-04-26T20:30:00Z
GITHUB_TOKEN rotated usuario via UI
prev=ghp_***live next=ghp_***live

read = secreto resuelto en un proceso hijo · revealed-blocked = el scrubber atrapó un intento de leak · rotated = reemplazaste el valor

Por qué existe

Claude Code puede ejecutar comandos de shell. Ese es el punto. Pero las formas usuales de darle credenciales — variables de entorno, archivos .env, pegar un token en el chat — terminan todas con el texto plano en un transcript o un log.

export GITHUB_TOKEN=ghp_Ab12... → valor cae en el historial del shell, env, y cada output de tool

"Aquí está mi token: ghp_Ab12..." → valor cae en el contexto del modelo y en el transcript

curl -H "Authorization: Bearer {{GITHUB_TOKEN}}" ... → ClauLock resuelve en fork/exec. El transcript conserva el placeholder.

Founders — Apoyo pre-1.0

Ayuda a shipear 1.0. Sé Founder.

$49 única vez → 2 años de Pro ($98 de valor). Pagas un año, el segundo va por mi cuenta. Tu nombre en el repo público, acceso anticipado a funciones Pro y un voto en el roadmap. 2.500 plazas — cierra cuando v1.0 salga.

$49 — ahorras $49 vs. Pro a $49/año tras el launch

5 / 2.500 reclamados2.495 restantes

Pruébalo en cinco minutos.

Un comando instala el daemon, el servidor MCP y los hooks de Claude Code. Gratis para siempre para individuos — Pro activa sync y breach detection.

curl -fsSL https://claulock.com/install.sh | sh