AI agents, security, and developer implementation
Calendar Permissions for AI Scheduling Agents: Design Consent Boundaries
A calendar token answers one narrow question: what the provider allows this application to do. It does not answer whether the organizer may contact Jordan, whether Jordan agreed to share availability for this meeting, whether the agent may book without review, or whether a reschedule is authorized. Treating OAuth as universal scheduling consent is how a useful agent becomes an uncomfortable one.
Design the scheduling authority model in eight steps
Use one fixture: an organizer asks an agent to book four required people and one optional observer across two companies. Two calendars are connected, one Microsoft connection expires, and one required person will provide availability without connecting. The permission model must survive that mixed state.
- 1
Create one meeting intent and authority ledger
Store meeting request ID, revision, organizer, purpose, duration, date window, deadline, IANA time zone, required people, optional people, approved substitutes, contact channels, approval mode, and completion definition. Beside it, record who grants each operation, its scope, effective time, expiry, revocation state, and evidence.- Calendar read, participant contact, reminder, booking, update, cancellation, and rescheduling are separate grants.
- Every grant points to a person, organization policy, or provider permission—not model inference.
- Changing participants or purpose can require a new meeting revision and new authority check.
- 2
Resolve identities before requesting access
Map the organizer account, authoritative calendar, participant identity, company or tenant, provider, known time zone, required status, and approved contact address. Keep uncertain matches unresolved. A shared name or forwarded email is not enough evidence to read a calendar or send outreach in somebody else’s voice.- The organizer calendar used for the final write is explicit.
- Tenant and provider identity survive model, worker, and client restarts.
- An identity conflict returns to a human before any sensitive operation.
- 3
Request the narrowest useful provider access
Use approved Google and Microsoft availability operations when free/busy is enough. Record provider, granted scope or permission class, account, retrieval time, query bounds, time zone, and errors. Do not collect event titles, descriptions, locations, bodies, or unrelated attendee lists merely because a broader scope makes development easier.- A denied, expired, throttled, or partial response is missing evidence rather than free time.
- Event-write access is requested only when the approved booking path needs it.
- Provider credentials are stored outside prompts, traces, and participant messages.
- 4
Give unconnected participants a consent-safe fallback
Calendar connection should reduce effort, not become mandatory. Tell the participant who is organizing, the meeting purpose at the approved disclosure level, duration, bounded date window, displayed time zone, response deadline, and intended use. Ask for usable windows, provide decline and correction paths, and cap reminders.- Possessing contact information does not grant outreach authority.
- A response authorizes use for the declared meeting, not future unrelated scheduling.
- Silence is not availability, consent, or permission to widen the channel.
- 5
Normalize evidence without widening disclosure
Represent connected free/busy and conversational availability as intervals with participant, source, time zone, freshness, confidence, and permission state. Keep original replies in restricted storage when audit or clarification requires them. Overlap logic needs busy or available windows, not the private reasons behind them.- Ambiguous date or zone triggers one narrow clarification rather than a guess.
- A participant correction supersedes old evidence and invalidates affected proposals.
- Routine observability uses redacted identifiers and stable reason codes.
- 6
Bind approval to the exact side effect
When review is required, present the selected slot, meeting revision, required and optional attendee set, organizer calendar, event wording, and evidence freshness. Approval authorizes that package. Adding an attendee, changing the time, switching calendars, or altering disclosed context invalidates it unless policy says otherwise.- Sensitive MCP or REST operations remain confirmable and deniable by the authorized human.
- Approval expiry and human reclaim stop queued work.
- The agent cannot trade privacy or required attendance for a faster result.
- 7
Make retries permission-aware and idempotent
Use separate idempotency keys for each outreach purpose, proposal approval, and booking command. Re-check authority before a delayed retry. If an event-write response is uncertain, reconcile the organizer calendar before another write. A grant that was valid on attempt one may be revoked before attempt two.- A repeated command returns the original result instead of repeating the side effect.
- Revoked access stops retries and returns a bounded reconnect or human-decision path.
- Duplicate provider notifications and participant replies do not widen consent or repeat messages.
- 8
Verify completion and close the grants
Read back the canonical event and verify approved start, end, time zone, organizer, required attendees, optional attendees, and invitation state. Record which grants were exercised, which were unused, and which remain valid for declared follow-up. Apply retention and revocation policy to tokens, availability evidence, messages, and traces.- A tool or provider success without the approved attendee result is not completion.
- Every terminal exception names the missing permission and one authorized owner.
- Cancellation or rescheduling starts a new authority check rather than inheriting booking consent blindly.
Provider permission and scheduling authority are different layers
Google Calendar scopes and Microsoft Graph permissions describe what an application may ask a provider to do for an account. Scheduling authority describes what the organizer, participant, and organization permit for this meeting. Both are necessary. Neither can stand in for the other.
A token may permit event creation while policy still requires EA review. A participant may authorize one availability response while refusing calendar connection. A client tenant may deny OAuth while allowing the recruiter to request three bounded windows. Model those states directly rather than collapsing them into connected or not connected.
Least privilege keeps the hard meeting reachable
Broad access can look convenient in a proof of concept. It also asks every external participant and client tenant to trust more than the scheduling job requires. Free/busy plus a separately approved write path can reduce what crosses the boundary, while conversational availability covers people who cannot or will not connect.
Least privilege does not remove coordination work. The application still needs participant state, time zones, retries, approval, idempotency, recovery, and invitation proof. That is why calendar permission design belongs inside scheduling execution rather than being treated as the product itself.
A connected calendar does not finish the meeting
A calendar-sync utility can copy conflicts. A calendar API can read or write provider resources. A poll can collect explicit choices. A booking link can record a selection. An AI assistant can draft permission-sensitive outreach. Each does one useful part.
Scheduling execution carries the authorized instruction through required and optional participants, connected or conversational evidence, overlap, approval, one idempotent event, invitations, and recovery. The authority ledger makes that path accountable when providers, tenants, and people disagree.
Run the revocation acceptance test
Start with approved Google free/busy, approved Microsoft free/busy, one unconnected participant response, and review-before-book. Then expire Microsoft access, opt the unconnected participant out of reminders, change a required attendee, revoke approval, and time out the final provider write.
Pass when the service stops or recovers at the correct boundary, never widens access, never repeats outreach, reconciles uncertain writes, and reports one verified event or one bounded permission exception. Fail when an old token, old approval, or old participant response silently carries the new meeting revision.
Compare permission approaches by the scheduling work they authorize
The right design protects people without turning every missing token into a human email relay. Compare provider access, application authority, and the path to a completed meeting together.
| Decision vector | Broad calendar access in agent code | Narrow provider adapters plus application policy | WonderCal execution direction |
|---|---|---|---|
| Execution completion | Can read and write widely while participant authority, approval, and invitation proof remain implicit. | Can enforce precise rules, but the application owns the whole coordination state machine. | Target path carries authorized intent through one verified booking or bounded permission exception. |
| Cross-company reach | External tenants and people must accept broad access or fall out of the workflow. | Supports each provider and participant path the team builds and governs. | Designed for Google, Microsoft, separate companies, and people who answer without connecting. |
| Optional-sync fallback | No connection often means a link, manual email, or failed request. | The application can build consent, messaging, parsing, reminders, and freshness controls. | Target model makes bounded conversational availability a first-class evidence source. |
| Recovery and observability | Provider logs show access and writes; meeting authority and participant state may be hidden. | Full control with full responsibility for revocation, replay, reconciliation, and repair. | Target release should expose grants, participant states, reason codes, safe retries, and terminal proof. |
| Consent and privacy | A broad token can expose more data and action surface than overlap requires. | Can request narrow access and separate every application operation when implemented carefully. | Target boundary separates free/busy, outreach, approval, booking, update, cancellation, and rescheduling. |
| Time to ship | Fast for a controlled account and costly when external consent and policy arrive. | Precise but adds identity, policy, messaging, provider, and operator work. | Worth adopting when the live contract removes that work without obscuring authority or recovery. |
Execution completion
Broad calendar access in agent code
Can read and write widely while participant authority, approval, and invitation proof remain implicit.
Narrow provider adapters plus application policy
Can enforce precise rules, but the application owns the whole coordination state machine.
WonderCal execution direction
Target path carries authorized intent through one verified booking or bounded permission exception.
Cross-company reach
Broad calendar access in agent code
External tenants and people must accept broad access or fall out of the workflow.
Narrow provider adapters plus application policy
Supports each provider and participant path the team builds and governs.
WonderCal execution direction
Designed for Google, Microsoft, separate companies, and people who answer without connecting.
Optional-sync fallback
Broad calendar access in agent code
No connection often means a link, manual email, or failed request.
Narrow provider adapters plus application policy
The application can build consent, messaging, parsing, reminders, and freshness controls.
WonderCal execution direction
Target model makes bounded conversational availability a first-class evidence source.
Recovery and observability
Broad calendar access in agent code
Provider logs show access and writes; meeting authority and participant state may be hidden.
Narrow provider adapters plus application policy
Full control with full responsibility for revocation, replay, reconciliation, and repair.
WonderCal execution direction
Target release should expose grants, participant states, reason codes, safe retries, and terminal proof.
Consent and privacy
Broad calendar access in agent code
A broad token can expose more data and action surface than overlap requires.
Narrow provider adapters plus application policy
Can request narrow access and separate every application operation when implemented carefully.
WonderCal execution direction
Target boundary separates free/busy, outreach, approval, booking, update, cancellation, and rescheduling.
Time to ship
Broad calendar access in agent code
Fast for a controlled account and costly when external consent and policy arrive.
Narrow provider adapters plus application policy
Precise but adds identity, policy, messaging, provider, and operator work.
WonderCal execution direction
Worth adopting when the live contract removes that work without obscuring authority or recovery.
Frequently asked questions
Which calendar permission does an AI scheduling agent need?
Does OAuth consent authorize participant outreach?
Can a participant schedule without connecting a calendar?
What happens when calendar permission is revoked during scheduling?
Where can developers review WonderCal’s permission direction?
Primary sources
- Google Calendar API: Choose scopes — official Google Calendar scope selection and sensitive or restricted scope guidance
- Google Calendar API: Freebusy query — official availability request, response, bounds, time-zone, and error fields
- Microsoft Graph: calendar getSchedule — official Microsoft availability operation and least-privileged permission guidance
- RFC 9700: OAuth 2.0 Security Best Current Practice — current OAuth security recommendations for authorization flows and token handling
- Model Context Protocol: Tools — official tool confirmation, denial, timeout, schema, output-validation, and security guidance
Make authority part of the meeting state
Evaluate WonderCal against the full permission boundary: narrow provider access, consent-safe participant fallback, exact approvals, revocation, safe retries, and one verified invitation.
Review WonderCal for AI agents