zed-industries/zed · error

incorrect protobuf resolve inlay hint message: missing the i

Error message

incorrect protobuf resolve inlay hint message: missing the inlay hint

What it means

handle_resolve_inlay_hint received a ResolveInlayHint protobuf whose referenced inlay hint is missing from the local cache (e.g. hints were cleared or recomputed between request and resolve), so the payload cannot be resolved against a known hint.

Source

Thrown at crates/project/src/lsp_store/inlay_hints.rs:393

        envelope: TypedEnvelope<proto::RefreshInlayHints>,
        mut cx: AsyncApp,
    ) -> Result<proto::Ack> {
        lsp_store.update(&mut cx, |lsp_store, cx| {
            lsp_store
                .refresh_inlay_hints(LanguageServerId::from_proto(envelope.payload.server_id), cx);
        });
        Ok(proto::Ack {})
    }

    pub(super) async fn handle_resolve_inlay_hint(
        lsp_store: Entity<Self>,
        envelope: TypedEnvelope<proto::ResolveInlayHint>,
        mut cx: AsyncApp,
    ) -> Result<proto::ResolveInlayHintResponse> {
        let proto_hint = envelope
            .payload
            .hint
            .expect("incorrect protobuf resolve inlay hint message: missing the inlay hint");
        let hint = InlayHints::proto_to_project_hint(proto_hint)
            .context("resolved proto inlay hint conversion")?;
        let buffer = lsp_store.update(&mut cx, |lsp_store, cx| {
            let buffer_id = BufferId::new(envelope.payload.buffer_id)?;
            lsp_store.buffer_store.read(cx).get_existing(buffer_id)
        })?;
        let response_hint = lsp_store
            .update(&mut cx, |lsp_store, cx| {
                lsp_store.resolve_inlay_hint(
                    hint,
                    buffer,
                    LanguageServerId(envelope.payload.language_server_id as usize),
                    cx,
                )
            })
            .await
            .context("inlay hints fetch")?;
        Ok(proto::ResolveInlayHintResponse {

View on GitHub (pinned to 5a9b9558db)

Solutions

  1. Return an error/empty response instead of panicking on stale resolve requests
  2. Have the client re-request inlay hints before resolving
  3. Version inlay hint caches so stale resolves are discarded
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/project/src/lsp_store/inlay_hints.rs:390 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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