zed-industries/zed · error

credential storage is not available on the web

Error message

credential storage is not available on the web

What it means

Raised in the gpui web platform's credential handling: write/read credentials is invoked, but browser environments provide no secure credential-storage backend, so the platform stub rejects the operation. It is a capability guard, not an authentication failure.

Source

Thrown at crates/gpui_web/src/platform.rs:641

                    // other web apps routinely carry `text/html` and
                    // `web application/...` custom formats whose `getType`
                    // fetches would be wasted or rejected.
                    if mime_type == "text/plain" {
                        match read_clipboard_item_text(&item, &mime_type).await {
                            Ok(text) if !text.is_empty() => {
                                entries.push(ClipboardEntry::String(ClipboardString::new(text)));
                            }
                            Ok(_) => {}
                            Err(error) => log_clipboard_entry_error(&mime_type, &error),
                        }
                    } else if let Some(format) = ImageFormat::from_mime_type(&mime_type) {
                        match read_clipboard_item_bytes(&item, &mime_type).await {
                            Ok(bytes) => {
                                entries
                                    .push(ClipboardEntry::Image(Image::from_bytes(format, bytes)));
                            }
                            Err(error) => log_clipboard_entry_error(&mime_type, &error),
                        }
                    } else {
                        saw_unsupported_type = true;
                    }
                }
            }
            if !entries.is_empty() {
                Ok(Some(ClipboardItem { entries }))
            } else if saw_unsupported_type {
                Err(ClipboardReadError::UnsupportedContent)
            } else {
                Ok(None)
            }
        })
    }

    fn write_to_clipboard(&self, item: ClipboardItem) {
        if let Some(text) = item.text()
            && let Some(window) = web_sys::window()

View on GitHub (pinned to 9d272b0363)

Solutions

  1. Use the Web Authentication / Credential Management APIs or server-side storage on the web
  2. Detect the platform and skip secret-storage features in web builds
  3. Handle the sentinel so auth flows fall back to in-memory or session-only credentials
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/gpui_web/src/platform.rs:631 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@9d272b0363 (2026-08-20). Data as JSON: /api/errors/b9e9e3a2f98508ec. Report an issue: GitHub.