Saltar al contenido
claudemods

Bloquear comandos peligrosos en Claude Code antes de que se ejecuten

Rechaza rm -rf /, force-push a main, DROP TABLE, curl | sh y otros comandos Bash destructivos antes de que se ejecuten.

Permisos

  • Intercepta llamadas a herramientasVe cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
  • Modifica la interfazDibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
probado con
v2.1.291
última prueba
requiere
Claude Code ≥ 2.1.287
superficies
aviso
código fuente
ClaudeMods (MIT)

Instalar dentro de Claude Code:

/plugin install cm-block-dangerous-commands --marketplace rotbit/claudemods-marketplace
Todas las opciones de instalación ↓

¿Qué hace este mod?

Este mod te permite bloquear comandos peligrosos en Claude Code justo antes de que se ejecuten a través de su herramienta Bash. Antes de que se ejecute cualquier comando de shell, se compara con una lista breve de reglas. Si hay coincidencia, el comando se rechaza, Claude recibe qué regla se activó y por qué, y tú ves un toast con el nombre de la regla. Los comandos seguros pasan sin ningún cambio.

Las reglas integradas cubren rm -rf sobre /, ~, $HOME, . o *; git push --force a main o master; git clean -fdx; las sentencias SQL DROP TABLE, DROP DATABASE, DROP SCHEMA y TRUNCATE; chmod -R 777 /; mkfs; dd sobre un dispositivo de disco; redirigir la salida a un disco en bruto; canalizar curl o wget hacia una shell; y la clásica fork bomb. git reset --hard está disponible como regla opcional. Requiere Claude Code 2.1.287 o posterior.

Demo

La grabación pide a Claude que haga algo destructivo en un proyecto de demostración. El mod rechaza la llamada a Bash, un toast muestra la regla que coincidió, y Claude lee el motivo y responde sin ejecutar el comando.

Instalación

Usa uno de los métodos de instalación del bloque. La protección está activa desde la siguiente llamada a una herramienta; no hace falta reiniciar después de /reload-plugins.

$ install cm-block-dangerous-commands

Requiere Claude Code ≥ 2.1.287

  1. 1.Una línea, dentro de Claude Code

    /plugin install cm-block-dangerous-commands --marketplace rotbit/claudemods-marketplace

    Pégala en una sesión abierta (v2.1.275+). Claude Code te pedirá primero añadir el marketplace.

  2. 2.Desde tu shell

    claude plugin marketplace add rotbit/claudemods-marketplace
    claude plugin install cm-block-dangerous-commands@claudemods

    Después ejecuta /reload-plugins en cualquier sesión que ya esté abierta.

  3. 3.Pruébalo sin instalarlo

    git clone https://github.com/rotbit/claudemods-marketplace
    claude --plugin-dir ./claudemods-marketplace/cm-block-dangerous-commands

    Carga el mod solo para una sesión. No se añade nada a tu configuración.

Cómo funciona

Toda la lógica está en un único hook de tool.call. Extraído de hooks/register.ts:

on('tool.call', { tool: 'Bash' }, ($, e, next) => {
  const match = findMatch(e.command, settings)
  if (match === undefined) return next(e)

  if (settings.mode === 'warn') {
    $.ui.toast(`${$.plugin.name}: "${match.name}" is running (warn mode)`)
    return next(e)
  }

  $.ui.toast(`${$.plugin.name}: blocked "${match.name}"`)
  return { deny: denyReason($.plugin.name, match) }
}).catch(($, e, next) =>
  next.called
    ? next(e)
    : { deny: `${$.plugin.name}: its check failed, so the command was not run to be safe.` },
)

El filtro { tool: 'Bash' } hace que el hook solo vea comandos de shell. findMatch, en hooks/rules.ts, comprueba primero allowPatterns, después las reglas integradas (omitiendo las desactivadas) y, por último, tus extraPatterns. Si no hay coincidencia, next(e) ejecuta el comando con normalidad. Si la hay, el hook devuelve { deny: reason }, y ese motivo se convierte en el resultado de la herramienta que Claude lee.

El manejador .catch es lo que convierte esto en una protección y no en un simple filtro. Si la comprobación lanza un error antes de llamar a next, la llamada se deniega en lugar de permitirse: el mod falla de forma cerrada. Un hook de session.start muestra un toast una sola vez si alguno de tus patrones personalizados no es una expresión regular válida.

Cada regla de rules.ts son datos simples: un id, un nombre, un motivo de una frase y comandos de ejemplo que comprueban los tests.

Personalízalo

Cambia estas opciones en /config. mode: warn convierte la protección en un aviso: los comandos que coinciden se siguen ejecutando y recibes un toast. extraPatterns y allowPatterns aceptan expresiones regulares de JavaScript, una por entrada. Para cambiar una regla integrada, edita su pattern en el array RULES de hooks/rules.ts.

AjusteTipoValor por defectoQué hace
modestring (block | warn)"block"Mode. block refuses a matching command; warn lets it run and shows a toast.
blockForcePushbooleantrueBlock force-push to main/master. Refuse git push --force / -f / +main to main or master.
blockHardResetbooleanfalseBlock git reset --hard. Also refuse git reset --hard (off by default: it is a common, recoverable-ish workflow).
extraPatternsstring[]Extra patterns. Additional JavaScript regular expressions; a Bash command matching any of them is treated as dangerous.
allowPatternsstring[]Allow patterns. JavaScript regular expressions; a Bash command matching any of them is never blocked, whatever else it matches.

Cámbialos en Claude Code con /config: el mod se recarga en caliente.

Permisos y seguridad

Intercepta llamadas a herramientas es la razón de ser del mod: ve cada comando de Bash antes de que se ejecute y puede denegarlo. Nunca reescribe un comando ni ejecuta ninguno por su cuenta. Modifica la interfaz cubre los toasts. No tiene acceso propio a archivos, red, modelo ni comandos.

Es una protección contra accidentes, no un sandbox. Un comando diseñado para esquivar los patrones pasará, así que mantén activadas las solicitudes de permiso de Claude Code. Desactiva el mod con /plugin disable cm-block-dangerous-commands, o inicia una sesión con todos los mods desactivados usando claude --safe-mode.

Intercepta llamadas a herramientas
Ve cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
Modifica la interfaz
Dibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).

Compatibilidad y solución de problemas

Probado con Claude Code 2.1.291 en la terminal de macOS. Si siguen ejecutándose comandos que esperabas que se bloquearan:

  • Comprueba que claude --version sea 2.1.287 o posterior y que el mod esté habilitado en /plugin.
  • Ejecuta /reload-plugins después de una instalación desde la shell.
  • Comprueba en /config que mode sea block y no warn.
  • Comprueba que ninguna entrada de allowPatterns coincida con más de lo que pretendías.
  • La protección solo cubre la herramienta Bash. Las ediciones de archivos mediante Edit y Write no se comprueban.

Si se rechaza un comando seguro, añade un patrón de permiso específico en lugar de pasar todo el mod a modo aviso.

Preguntas frecuentes

¿Sustituye esto a las solicitudes de permiso de Claude Code?
No. Es una protección basada en patrones frente a accidentes habituales. Un comando ofuscado puede colarse por una expresión regular, así que mantén activadas las solicitudes de permiso y las reglas de denegación.
¿Qué ve Claude cuando se bloquea un comando?
La llamada se deniega con un motivo que nombra la regla, explica por qué y sugiere pedirte que lo ejecutes tú o ajustar allowPatterns o mode en /config. Normalmente Claude elige un comando más seguro o te pregunta.
¿Cómo permito un comando concreto?
Añade una expresión regular a allowPatterns en /config. Una coincidencia ahí siempre tiene prioridad sobre las reglas integradas y tus extraPatterns.
¿Se bloquea git reset --hard?
No por defecto, porque es un flujo de trabajo común y a menudo intencionado. Activa blockHardReset para bloquearlo.
¿Qué pasa si el propio mod falla?
El hook de tool.call falla de forma cerrada. Si la comprobación lanza un error antes de que se ejecute el comando, este se deniega con un mensaje que indica que la comprobación falló.
Rama git sobre el prompt funcionando en Claude Code

Rama git sobre el prompt

Tu rama git, los archivos cambiados y el estado ahead/behind en una franja de una línea sobre el prompt de Claude Code.

  • sobre el prompt
  • Ejecuta comandos
  • Intercepta llamadas a herramientas
  • Modifica la interfaz

probado con v2.1.291

Aviso de finalización funcionando en Claude Code

Aviso de finalización

Un toast «Done in 2m 14s» y un sonido al terminar un turno largo de Claude, más un aviso de escritorio opcional.

  • aviso
  • Ejecuta comandos
  • Modifica la interfaz
  • Reproduce sonido

probado con v2.1.291

Contador de llamadas a herramientas funcionando en Claude Code

Contador de llamadas a herramientas

Cuenta las llamadas a herramientas por turno y sesión, muestra el total junto al spinner y añade /tally con un desglose.

  • spinner
  • transcripción
  • estado
  • Intercepta llamadas a herramientas
  • Modifica la interfaz
  • Añade comandos/herramientas

probado con v2.1.291

Más en Protecciones de seguridad, Git y GitHub.