Google Calendar plugin cannot create true all-day events

Open 💬 0 comments Opened Jul 26, 2026 by tylerlinahan

What issue are you seeing?

The Google Calendar plugin in Codex cannot create or update true all-day events. The exposed create_event and update_event tools only accept start_time and end_time as RFC3339 datetime strings, but Google Calendar requires start.date and end.date for true all-day events.

This makes deadline/date-marker workflows impossible to represent correctly through the connector. The workaround is to create a timed event, but that is semantically wrong and appears on the calendar as a time block.

Environment

  • Codex CLI: 0.142.5
  • Codex app/plugin context: Desktop app task using Apps connector tools
  • Google Calendar plugin: google-calendar version 1.2.4
  • Plugin ID seen locally: plugin_connector_1p_f8509de903288191b14a160c6c5d20b0
  • OS: macOS 15.7.7, x86_64
  • Calendar account used by connector: Google Calendar app connector profile, not browser UI

Steps to reproduce

  1. Install/connect the Google Calendar plugin in Codex.
  2. Ask Codex to create an all-day event on a secondary Google Calendar.
  3. Use the available create_event tool.
  4. Observe that the schema requires:
  • start_time: full ISO-8601/RFC3339 datetime
  • end_time: full ISO-8601/RFC3339 datetime
  1. Try date-only values such as 2026-07-31 and 2026-08-01.
  2. Try JSON-shaped strings such as {"date":"2026-07-31"} and {"date":"2026-08-01"}.

Actual behavior

  • The connector rejects date-only or JSON-shaped all-day attempts with HTTP 400.
  • The only successful path is creating a timed event such as 2026-07-31T09:00:00-07:00 to 2026-07-31T09:30:00-07:00.
  • That creates a timed event, not a true all-day event.

Expected behavior

The connector should support Google Calendar's all-day event representation:

{
  "summary": "Example deadline",
  "description": "Notion URL: ...\nSource URL: ...",
  "start": { "date": "2026-07-31" },
  "end": { "date": "2026-08-01" },
  "transparency": "transparent"
}

end.date is exclusive in Google Calendar, so a one-day all-day event on July 31 ends on August 1.

Suggested tool API

Add first-class fields to create_event and update_event, for example:

{
  "all_day": true,
  "start_date": "2026-07-31",
  "end_date": "2026-08-01"
}

or allow a raw start / end object equivalent to the Google Calendar API.

The all-day path should still support existing fields such as calendar_id, title, description, transparency, visibility, reminders, attendees, and event color.

Impact

This affects common Calendar workflows:

  • deadlines
  • application due dates
  • holidays
  • birthdays
  • date markers
  • travel days
  • all-day reminders

Timed-event workarounds are misleading and pollute the user's schedule with fake time blocks.

View original on GitHub ↗