Gemini CLI
El soporte de Gemini replica la forma de Claude Code, dividido en dos
scripts. El hook del briefing está publicado, pero la serialización hoy no
puede correr de punta a punta: la captura está detenida detrás del issue
upstream gemini-cli#14715 (transcript_path es un stub) — medio ciclo, por
restricción upstream, no por un bug de daimon.
Qué hace cada script
daimon-gemini-session-start.py— hookSessionStart. Delega endaimon briefe inyecta el resultado vía el sobre{"hookSpecificOutput": {"additionalContext": ...}}de Gemini. Gemini exige stdout JSON-puro ("Silence is Mandatory") — a diferencia del hook de Claude Code, nada se imprime crudo; los diagnósticos para el operador viajan en{"systemMessage": ...}.SessionStartes solo-consultivo: siempre exit 0, el arranque nunca se bloquea.daimon-gemini-session-end.py— hookSessionEnd. Replica el hookSessionEndde Claude Code (lanzadaimon serialize <transcript_path>desacoplado), pero Gemini CLI actualmente envíatranscript_pathcomo un stub vacío (gemini-cli#14715, limitación upstream al 2026-07-01), así que el comportamiento principal de este hook hoy es una omisión elegante y registrada. La ruta de lanzamiento queda lista para cuando upstream complete el campo.
Instalación (manual, desde un clon)
gemini-hooks.py es el gestor de ciclo de vida (misma forma que
codex-hooks.py):
python3 hook/gemini-hooks.py install [--dry-run]
python3 hook/gemini-hooks.py uninstall [--dry-run]
python3 hook/gemini-hooks.py status
Install copia ambos scripts (más _daimon_hook_lib.py) a ~/.gemini/hooks/
y los registra en ~/.gemini/settings.json (capa de usuario). Requiere el
CLI daimon en el PATH (uv tool install 'daimon-briefing[pretty]').
Enséñale el protocolo al agente
daimon skill install gemini # bloque gestionado en ~/.gemini/GEMINI.md
En el archivo compartido GEMINI.md, daimon solo toca su propio bloque
marcado — daimon skill uninstall gemini elimina exactamente ese bloque.
Re-ejecuta install después de actualizar daimon para refrescar el
contenido.
Verificar
daimon status
Hasta que gemini-cli#14715 se resuelva upstream, espera que daimon status
muestre la captura como omitida en lugar de escrita — la inyección del
briefing en SessionStart funciona con independencia de la captura.