nextcloud/server · warning · Sabre\DAV\Exception\NotFound

%s with name '%s' could not be found

Error message

%s with name '%s' could not be found

What it means

The ACL check denied access to a node owned by someone else, so Nextcloud deliberately answers 404 ('Calendar/Addressbook/Node with name X could not be found') instead of 403 to avoid leaking the resource's existence. The type label is derived from the node class (Calendar, CachedSubscription, Addressbook, or generic Node).

Source

Thrown at apps/dav/lib/Connector/Sabre/DavAclPlugin.php:59

			$node = $this->server->tree->getNodeForPath($uri);

			switch (get_class($node)) {
				case AddressBook::class:
					$type = 'Addressbook';
					break;
				case Calendar::class:
				case CachedSubscription::class:
					$type = 'Calendar';
					break;
				default:
					$type = 'Node';
					break;
			}

			if ($this->getCurrentUserPrincipal() === $node->getOwner()) {
				throw new Forbidden('Access denied');
			} else {
				throw new NotFound(
					sprintf(
						"%s with name '%s' could not be found",
						$type,
						$node->getName()
					)
				);
			}

		}

		return $access;
	}

	#[\Override]
	public function propFind(PropFind $propFind, INode $node) {
		if ($node instanceof Node) {
			// files don't use dav acls
			return;

View on GitHub (pinned to ecdeb153ff)

Solutions

  1. Confirm the resource is actually shared with the authenticated principal and carries the needed permission.
  2. Re-share or re-accept the share, then refresh or recreate the client subscription.
  3. Verify the principal segment of the URL (correct, urlencoded owner uid).
Defensive patterns

Strategy: try-catch

Try / catch

try {
    $client->propfind($calendarUrl, []);
} catch (NotFound $e) { // 404: not shared with you, or truly gone
    clearStaleSubscription($calendarUrl);
    promptUserToReshare($calendarUrl);
}

Prevention

When it happens

Trigger: Accessing another user's calendar/addressbook by direct URL when no valid share exists: the share was revoked or expired, has not been accepted yet, or the principal segment of the URL is wrong.

Common situations: Stale calendar subscriptions after the owner unshared; clients caching old principal URLs across username changes; enumeration attempts probing for resource existence.

Related errors


AI-assisted analysis of nextcloud/server@ecdeb153ff (2026-08-17). Data as JSON: /api/errors/4b82db9b1317ce22. Report an issue: GitHub.