When a calendar is shared between users through JMAP (bulwark), the share operation completes successfully. However, the shared calendar never appears in the recipient’s account.
Expected Behavior
The shared calendar should be visible to the recipient immediately after the share operation.
Actual Behavior
The share operation succeeds.
The recipient never sees the shared calendar.
Reproduction Steps
Sign in as User A.
Create a calendar named “Pro”.
Share the “Pro” calendar with User B using JMAP.
Sign in as User B.
Open the list of available calendars.
The “Pro” calendar should be visible and accessible to User B according to the granted permissions.
The share operation completes successfully, but the “Pro” calendar does not appear in User B’s calendar list and cannot be accessed.
Stalwart Version
v0.16.x
Installation Method
Docker
Database Backend
PostgreSQL
Blob Storage
S3-compatible
Search Engine
PostgreSQL
Directory Backend
OIDC
Additional Context
This issue appears to be closely related to the following reported issue:
I have reviewed the documentation and FAQ and confirm that my issue is NOT addressed there.
on
I have searched this support forum (open and closed topics) and confirm this is not a duplicate.
on
I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.
I’d say it’s a stalwart issue. I hit this issue months ago before I even started using bulwark**. I shared a calendar from the stalwart ui from a user account to my account which was an admin and the shared calendar would never appear. Removed admin rights from my account and the calendar sharing works as it should.
@stalwart
I have just installed the new version of Stalwart (v0.16.20) along with the latest version of Bulwark (v1.9.2).
I can now share a calendar.
However, as soon as I share a calendar with another user, we can also mutually access each other’s personal mailboxes, which appear under the shared accounts.
This issue only occurs when the account has administrator privileges.
Additionally, when I share a calendar with “availability only” permissions, the calendar remains invisible to the other user.
Would you like me to open a new issue for these two problems, or would you prefer to keep them in the existing issue?
The availability-only case is deliberate and the spec requires it. When mayReadFreeBusy is the only permission granted, the calendar must not appear in Calendar/get or Calendar/query at all: the JMAP Calendars draft §4.1 says it has to behave as though it did not exist, and the grant is consumed by free-busy lookups and Principal/getAvailability instead. Our sharing docs say none of that, which is why it reads as broken. I will get it added.
The admin case is what impersonate means. An account holding that permission counts as a member of every account on the server, so as soon as any share exists it turns up with full rights across all collections. It is not a permission to put on accounts people use day to day.
It might be a good idea to separate administrative permissions from access to users’ content.
An administrator should be able to manage the server and user accounts without automatically having access to everyone’s personal mailboxes. Ideally, impersonate should be an explicit permission, reserved for cases where access to another user’s content is actually required, rather than being an inherent consequence of having an administrator role.