Docs/Lanes Link/Providers/iCloud Calendar

iCloud Calendar

Connect iCloud Calendar to your agents with Lanes Link. Read and write events over CalDAV.

Read and create events in iCloud calendars over CalDAV.

Connect it

console
$ lanes link connect icloud_calendar --profile personal --workspace local

This takes an app password rather than a browser sign-in. One password covers icloud_contacts and icloud_mail as well, because they share a credential. The iCloud guide has the steps for generating one.

Because it needs no browser, an agent with a shell can do the whole setup:

console
$ printf %s "$TOKEN" | lanes link secrets set icloud/main --profile personal
$ lanes link connect icloud_calendar --id main --non-interactive --json --profile personal

Credentials go in on stdin, never as a flag: an argument lands in your shell history, in ps output, and in any transcript.

What your agent can do

CalDAV gives a fixed set of capabilities, the same on every server that speaks it:

  • icloud_calendar.list_calendars
  • icloud_calendar.list_events
  • icloud_calendar.get_event
  • icloud_calendar.create_event
  • icloud_calendar.update_event
  • icloud_calendar.delete_event

What is recorded

Every call is recorded, allowed or refused. The rule is to keep the shape and withhold the words: an audit log that reproduced the content would be a second copy of the thing it was meant to make accountable.

Identifiers such as calendar, start, end, limit, and uid are kept. Everything that carries your words is withheld.

What an entry holds and how to read one is on the audit log.

Narrowing what it may do

Connecting grants the read bundle. Tightening it happens on your machine and takes effect at once:

console
$ lanes link policy deny 'icloud_calendar.*' --connection icloud_calendar.main --profile personal --workspace local

A deny always beats an allow, whatever the order in the file. See Scopes and permissions for widening, and for what can and cannot be set per connection.


Next: every provider, or Connections for what a connection is and the methods behind one.