Google Calendar
Historial de cambios
Lee las notas de versión de la CLI de Google Calendar: novedades, cambios y correcciones.
Cambios destacados de @wirecat/gcal-cli. Una sección por versión, de la más reciente a la más antigua.
0.1.1 — 29.10.2026
Corregido
- La cabecera de la guía para agentes (
skills/gcal-cli/SKILL.md) vuelve a ser YAML válido. SudescriptionconteníaCalendar: sync, que un analizador de YAML interpreta como un mapa anidado, así que los cargadores de skills estrictos y el índice de skills del sitio de WireCat rechazaban el archivo. El texto no cambia, salvo un guion en lugar de esos dos puntos.
0.1.0 — 29.10.2026
Añadido
gcal <profile> session start | status | endinicia sesión en Google en el navegador, con acceso de solo lectura a Calendar. Por ahora usa tu propio cliente de OAuth de Google (--client-file, oGCAL_GOOGLE_CLIENT_IDyGCAL_GOOGLE_CLIENT_SECRET); los ajustes explican cómo crear uno. La sesión se guarda en el llavero del sistema o, con--credential-storage file, en un archivo privado (modo 600) donde no funcione ningún llavero.session status --checkpregunta a Google si la sesión sigue funcionando.--grant writepide ademáscalendar.events, que necesitan las escrituras de eventos, y--grant sharingpidecalendar.acls, que necesita la compartición.gcal session listmuestra los perfiles de este ordenador, cada uno consigned_in,accountycredential_storage; ningún comando elige un perfil por ti.gcal <profile> synccopia tus calendarios al almacén local de WireCat, y los comandos de lectura funcionan sin conexión.calendars list | sync | unsync,events list | show,search,people list | linkylinks review | resolveson los comandos de calendario comunes de WireCat, así que las demás herramientas de WireCat ven los mismos eventos y personas. La primera sincronización lee los calendarios que son tuyos desde un año atrás hasta tres meses por delante; cada una de las siguientes pide a Google solo lo que ha cambiado. Los casos de un evento periódico se guardan uno a uno, incluidos los cancelados.sync --embedtambién indexa los eventos para la búsqueda por significado. Cada respuesta indica, enuntrusted, los campos que escribió quien envió una invitación, para que un agente los lea como datos.- Una sincronización grande continúa a lo largo de varias ejecuciones.
syncse detiene por sí solo antes de su límite de tiempo (15 minutos en una terminal, 45 segundos por MCP;--timeoutlo cambia y--max-pages <n>reduce todavía más las peticiones a Google) y guarda tras cada página. Una respuesta parcial indicastate: "partial", hasta dónde llegó y el comando que hay que ejecutar después.--rescanvuelve a empezar todos los calendarios.gcal <profile> statusmuestra el progreso de cada calendario sincronizado,partialocomplete, y cuánto tiempo hace que avanzó por última vez. gcal <profile> calendars busymuestra cuándo están ocupados calendarios y personas, a partir de la respuesta de disponibilidad de Google, que dice cuándo y nunca qué.--duration-minutesmuestra los huecos libres para todos dentro de--hours(09:00-17:00 por defecto), de lunes a viernes; quien Google no muestre aparece enunknown. No se guarda nada.gcal <profile> search --backend server <words>usa la búsqueda del propio Google Calendar en los calendarios sincronizados. Solo lee, no guarda nada y también encuentra eventos fuera del periodo sincronizado.--backend archive, el almacén local, es la opción por defecto.gcal <profile> events create | update | delete | respondcambian Google Calendar trassession start --grant write. Sin ese permiso, una escritura falla conpermission_errore indica la opción. Un cambio envía la versión sincronizada, así que un evento cambiado en Google desde entonces daevent.conflicty nunca se sobrescribe. Una creación cuya respuesta se perdió termina enoutcome_unknowncon un id; si la repites con ese id, encuentra el evento.events create --repeat <rule>crea un evento periódico, yevents update --series --repeat <rule>cambia su regla. Unas fechas nuevas en un evento con hora lo convierten en evento de todo el día, y unas horas nuevas convierten un evento de todo el día en uno con hora, conservando su enlace de Meet y sus archivos de Drive.respondcambia solo tu propia respuesta. Las escrituras también son herramientas MCP, con las mismas opciones que en la línea de comandos.gcal api list | show | call, y un comandogcal <profile> api <method>por método, llegan a todos los métodos de la API v3 de Google Calendar que gcal puede ofrecer. Se generan a partir de la descripción de la API que publica Google, y cada respuesta se comprueba con ella. No se ofrecen las notificaciones de cambios de Google (watch,channels.stop): necesitan una dirección web pública.- Cada comando y cada método de Google Calendar tiene una clave de permiso, como
events.createoapi.calendar.events.insert. Un cambio pregunta antes (--yesen un script), incluidos compartir un calendario y cederlo a otra cuenta; por MCP nadie responde, así queaskdeja que un agente lo ejecute. Tres claves están endenyhasta que las permitas:events.notify(Google envía un correo a los asistentes),events.delete.series(borrar todos los casos de un evento periódico) ysharing.notify(Google envía un correo a la persona con quien se comparte un calendario). Los comandosapicomprueban las mismas claves que las escrituras de eventos, y una escritura de eventos también comprueba la clave de su método de Google, así quepermissions.api readonlydetiene ambas. Vaciar un calendario (calendars.clear) está denegado y nunca se ofrece por MCP, igual queapi call.--dry-runmuestra todas las claves que comprueba una llamada, con su nivel. Una clave que no corresponde a ningún método se rechaza, ygcal doctormuestra las que haya guardadas en el archivo. - El código de acceso, el PIN y la contraseña de una reunión nunca salen de Google. Nunca se guardan: un enlace
para unirse se guarda sin su query string, y se descarta cualquier línea de la descripción o la ubicación de un
evento que mencione un código de acceso, una contraseña o un PIN. Los comandos
apitambién los eliminan, de toda respuesta que contenga un evento, en la terminal y por MCP. gcal <profile> mcp serveofrece los comandos del perfil a un agente, ymcp add claude-code | codex,mcp config,mcp check,mcp revokeymcp server start | stop | statuslo configuran.--profiles <names|all>ofrece varios perfiles; nunca se elige un perfil, así quegcal mcp servea secas los muestra y se detiene. El servidor indica al agente qué texto escribieron otras personas, y los caracteres de control de una respuesta se muestran de forma visible, así que el texto de una invitación no puede ocultarle nada al agente.gcal --helpmuestra lo que puede hacer gcal y por dónde empezar, ygcal guideda escenarios paso a paso: configurarlo, dar acceso a un agente, encontrar un hueco.gcal skill installañade la skill de la herramienta para Claude Code, Codex, Gemini CLI, OpenClaw y Hermes Agent.gcal doctormuestra lo que está configurado, sin red y sin llavero: la versión, las rutas, el almacén, el cliente de OAuth, el bloqueo del perfil y los archivos de sesión.gcal <profile> runs list | showmuestra las ejecuciones que guardó gcal, incluidos los inicios y cierres de sesión: las correctas durante 7 días y las fallidas durante 30. Los secretos se ocultan;config set record_input falseno guarda ninguna de las palabras que escribes.