tinyhumansai/openhuman · warning · Error

Cannot reveal "${path}" on this device — it is a path on the

Error message

Cannot reveal "${path}" on this device — it is a path on the openhuman-core host's filesystem (a different OS). Open it on the machine running the core.

What it means

revealPath refuses to open a path that belongs to another OS's filesystem: isForeignFsPath matched the path shape against the client OS (e.g. C:\... on macOS/Linux, or /Users/... on Windows). The path came from a remote openhuman-core running on a different machine/OS (issue #4278), so a local file opener could never find it — this error replaces a cryptic opener failure.

Source

Thrown at app/src/utils/openUrl.ts:117

 * deep link (e.g. `obsidian://`) may silently no-op because the
 * target app isn't installed.
 *
 * Outside Tauri this is a no-op — there's no OS shell to drive.
 *
 * Rejects with a clear error when `path` belongs to a different OS than this
 * device (issue #4278) — e.g. a shared `openhuman-core` running on another OS
 * served its own absolute path — instead of letting the opener fail cryptically.
 */
export const revealPath = async (path: string): Promise<void> => {
  if (!isTauri()) return;
  let clientOs: string | undefined;
  try {
    clientOs = await platform();
  } catch {
    clientOs = undefined;
  }
  if (isForeignFsPath(path, clientOs)) {
    throw new Error(
      `Cannot reveal "${path}" on this device — it is a path on the openhuman-core host's filesystem (a different OS). Open it on the machine running the core.`
    );
  }
  await revealItemInDir(path);
};

View on GitHub (pinned to a221052e0d)

Solutions

  1. Open the path on the machine actually running the core (sit down at it / remote desktop)
  2. If the core is local and this still fires, the path itself is malformed — check how the caller produced it
  3. In the UI, pre-check the path shape and show an 'on host machine' notice instead of a reveal button

Example fix

// before
await revealPath(path);

// after — gate the affordance instead of failing on click
const looksWindows = /^[A-Za-z]:[\\/]/.test(path);
if (looksWindows !== (clientOs === 'windows')) {
  showNotice(t('paths.onHostMachine'));
} else {
  await revealPath(path);
}
Defensive patterns

Strategy: validation

Validate before calling

function looksForeign(path: string, clientOs: string | undefined): boolean {
  const isWinPath = /^[A-Za-z]:[\\/]/.test(path);
  const isPosixPath = path.startsWith('/') || path.startsWith('\\\\');
  if (clientOs === 'windows') return isPosixPath && !isWinPath;
  return isWinPath;
}

Prevention

When it happens

Trigger: Clicking reveal-in-folder on an artifact/file path returned by a remote core — a shared openhuman-core on another OS (iOS client, LAN-shared core) serving Windows paths to a macOS client or vice versa.

Common situations: Remote-core setups; cross-OS development against a Windows core from a macOS client; paths surfaced in chat that refer to the host machine.

Related errors


AI-assisted analysis of tinyhumansai/openhuman@a221052e0d (2026-08-16). Data as JSON: /api/errors/f76fab82e14411e8. Report an issue: GitHub.