Ejecuta esto exactamente como está escrito — los argumentos van en la segunda línea del heredoc, nunca en el propio comando, en una sola línea, y solo las palabras quiet normal loud mute unmute --global approve on off:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/hwip-mode.sh" <<'HWIP_MODE_INPUT'
${CLAUDE_PROJECT_DIR}
$ARGUMENTS
HWIP_MODE_INPUT
Salida 2 significa un argumento incorrecto — muéstrale al usuario la línea de uso que imprimió. De lo contrario, informa las líneas de estado con tus propias palabras:
NOTIFICATIONS: muted→ los hooksStopyAskestán silenciados aquí; las herramientashwip_*siguen funcionando pero no se invocan a menos que el usuario lo pida. Mute prevalece sobre cualquier otro dial.PUSH MODE: quiet→ solo pushes de alta prioridad (bloqueantes,highPush Signal) mientras el usuario está en la terminal, más un push de finalización cuando ha estado ausente (HWIP_AWAY_SEC, por defecto 300 s) o cuando el panel de tmux de esta sesión no está en pantalla. El valor predeterminado incluido.PUSH MODE: normal→ un push en cada turno que realizó trabajo real, silencioso en turnos de solo lectura; los marcadores Push Signal deciden los casos límite.PUSH MODE: loud→ cada turno hace push, anulandoskip.- El paréntesis indica de dónde proviene el dial:
this project,global default(establecido con--global, heredado por proyectos sin su propio dial) o el predeterminado integrado. Un dial de proyecto siempre prevalece sobre el global. APPROVAL GATE: on|off→ si los comandos de Bash difíciles de deshacer (rm -rf, push forzado, deploy a producción, SQL destructivo) esperan aprobación en este proyecto. En la terminal, el mensaje de permiso propio de Claude Code pregunta; cuando está ausente, en REMOTO o cuando no se puede leer la presencia, lo hace el teléfono del usuario.on, but inactive while muted— un proyecto silenciado no tiene a quién preguntar, por lo que no se retiene nada.SCOPE: …→ los diales, silencio, puerta de aprobación y modo automático pertenecen al directorio del proyecto, no a la sesión: una segunda sesión de Claude en el mismo directorio los comparte. Dilo cuando el usuario cambie uno.AUTO MODE: …→ una sesión/hwip-autoestá en ejecución con ese presupuesto restante.off (an expired … session left its state behind — cleared)significa que una falló.LAST PUSH: …→ el registro de la CLI de su último push fallido (hwip notifylo escribe, un push exitoso lo elimina). Los hooks ocultan los errores de notify, por lo que esta línea es cómo "tranquilo, nada que enviar" se diferencia de "cada push falla". Transmite la causa y su solución tal como se dan (por ejemplo, una clave rechazada →hwip login, ninguna aplicación inició sesión → inicia sesión en la aplicación Hwip en un iPhone o Android);hwip verifytiene más.Hwip: <device> changed its encryption key — …→ no es un fallo: uno de los dispositivos del usuario ahora lista una clave de cifrado diferente a la que esta máquina tenía fijada, y la nueva clave es de confianza. Se muestra una vez, luego se borra. Transmítelo como tal — una aplicación reinstalada o un teléfono nuevo lo explica; si nada de eso,hwip trustmuestra las huellas dactilares para comparar con la aplicación.
Las preguntas (hwip_ask, el espejo de AskUserQuestion) hacen push bajo cualquier dial excepto mute.
El contexto que lleva una pregunta sellada (el diff de git enmascarado de la sesión y las últimas líneas de la terminal) no es un dial aquí. Si el usuario pide dejar de enviarlo, indícale que use hwip ask-context off (este proyecto) o hwip ask-context off --global (cada proyecto); hwip ask-context muestra cuál aplica.
Si la salida termina con un bloque === Hwip rules — replace the Hwip rules from session start ===, el estado cambió y las reglas que el hook SessionStart le dio a esta sesión están obsoletas: sigue ese bloque en su lugar durante el resto de la sesión, incluso después de la compactación. Session rules unchanged significa que el cambio no las afectó (por ejemplo, normal ↔ loud); conserva las que tienes. approve nunca cambia las reglas. Una línea could not refresh significa que el cambio aún se aplica pero las reglas no se actualizaron — dile al usuario que una nueva sesión las retomará.