[FEATURE] First-class Calendar in Claude Code: drop one-off events with attached prompts/sessions (not just a Routines read-out)
Preflight
- [x] I have searched existing requests and this hasn't been requested (related but distinct from #59625, #49857, #49096, #48322, #51110, #60005, #47518)
- [x] This is a single feature request
---
Problem Statement
Claude Code's scheduling story today has two shapes:
- Routines — cron-based recurring automation. Great for "every Monday at 9 run the weekly report."
- One-shot scheduled tasks (
/schedule,ScheduleWakeup, scheduled-tasks MCP) — fire-and-forget timed actions, but invisible after creation and addressed by ID, not by date.
Neither is a calendar. Neither lets me plan my week by dropping events on a timeline.
My actual workaround today: I put "wake-up tasks" for future Claude Code sessions into Google Calendar as plain reminders ("Tue 3pm: competitor research session"), then when the notification fires I manually open Claude Code and start the session with the prompt I had in mind. The planning surface is Google Calendar; Claude Code is just where the work happens. I want to collapse that into one app.
The Routines feature has a Calendar tab — it's almost there — but it's a read-out of recurring cron jobs, not a place I can drop a single event saying "this Thursday at 14:00, start a session about X with this prompt I'm typing now."
---
Proposed Solution
A first-class Calendar in Claude Code (extending the existing Routines Calendar tab, or as a sibling tab — whichever fits the IA) where I can author events, not just view runs.
Core: drop one-off events on the timeline
Click any time slot → modal: "What happens at this time?" with options:
- Start a session — with a prompt I type now, optional skill/agent/project context, optional model. At fire time, the desktop app opens a new session with that prompt ready (or auto-runs, if I opted in at creation).
- Run a one-shot task — existing
/schedule-style fire-and-forget action, but now visible on the calendar. - Just a reminder — notification only, no Claude action.
The event renders on the Calendar with its title, color-coded by type. I can drag to reschedule, click to edit the prompt, delete inline.
Plus: the things that make it a real planning surface (lower priority, additive)
- Mixed view — routines (cron) and one-off events render on the same timeline, color-coded by source. Today they live in disconnected surfaces.
- External calendar overlay — read-only events from connected Google Calendar / iCloud (#49857) MCP connectors, so I can plan Claude work around real meetings.
- Project filter — picker scopes the view to one project's events + routines + (mapped) external events.
Why this is the right shape
This is not "another scheduler." It's exposing primitives Claude Code already has — one-shot tasks, routines, sessions — on the timeline surface that everyone already plans on. Calendar becomes the daily home base, and the existing scheduling primitives become its event types.
---
Alternative Solutions
- Use Google Calendar as the planning surface (my current workaround) — works but the prompt I had in mind has to be re-typed when the reminder fires, the calendar event can't directly trigger a Claude session, and the planning lives in another app.
- Use Routines for one-offs — wrong shape: writing a cron expression for a single date is awkward, and Routines are framed as "automation," not "things I plan to do once."
- Use
/schedulefor one-offs — works as a timer but is invisible after creation; no way to see "what's on my schedule next Thursday" as a calendar view. - External
.icssubscription to routines — pulls Claude's data out into another app; defeats the goal of Claude being the planning home.
---
Priority
High — Significant impact on productivity
Feature Category
Interactive mode (TUI) — specifically the desktop/web Calendar surface
---
Use Case Example
Sunday evening, planning the week, entirely inside Claude Desktop:
- Open the Calendar tab.
- Click Monday 09:00 → "Start a session" → prompt: "Pull last week's metrics from the data MCP and write the weekly summary." Project: Project A. Model: opus. → Save.
- Click Tuesday 15:00 → "Start a session" → prompt: "Competitor research: pull pricing pages and summarize positioning shifts." → Save.
- Click Thursday 10:00 → "Run a one-shot task" → "Trigger the SEO audit routine once with these flags." → Save.
- The week now shows: my routines (cron, already running), my new one-off sessions (Mon, Tue, Thu), and — if I've enabled overlay — my Google Calendar meetings beside them.
- Monday 09:00: desktop notification fires, Claude Desktop opens the session with the prompt ready. I review and hit enter.
Today, steps 2–4 don't exist; I either jam everything into Google Calendar (workaround) or shape every one-off as a single-fire cron Routine (wrong shape). Step 6 happens through Google Calendar notifications, with me manually opening Claude Code and re-typing the prompt.
---
Additional Context
Building on existing primitives — nothing here is from scratch:
- The Calendar tab UI already exists (
area:routines; #59625, #49096). - One-shot scheduled tasks already exist (
/schedule,ScheduleWakeup, scheduled-tasks MCP). - Session start with a prepared prompt already exists (CLI flags, agent SDK).
- Push notifications when a scheduled session starts are already requested (#60005).
- The mechanism for "fire a Claude action at a specific timestamp" is shipped; this issue is about giving those timestamps a visual home on a calendar surface so they can be authored, edited, and planned against — instead of being invisible post-creation.
Why this is strategically high-leverage:
Calendar is the surface every operator, consultant, and builder plans on, daily. Right now Claude Code competes for "where you work" but loses "where you plan" to Google Calendar / Apple Calendar / Notion / etc. Making Calendar a first-class object — with the existing scheduled-action primitives as event types — turns Claude Desktop into the place planning and execution happen together. That's the underlying pitch for Cowork and Routines; calendar is the missing surface.
Related issues:
- #59625 — Calendar as default Routines tab (signals demand for the calendar view)
- #49857 — iCloud Calendar connector (would feed the overlay)
- #49096 — multi-value cron rendering in Calendar view (Calendar surface is actively maintained)
- #48322 — shared org routines (team calendar is the obvious follow-on)
- #51110 — UTC vs local timezone (overlay must use user's local TZ)
- #60005 — push notification when scheduled session starts (the notification surface this feeds)
- #47518 — visibility into scheduled wakeups (the "I can't see what's scheduled" pain this resolves)
🤖 Generated with Claude Code
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗