zed-industries/zed · error · anyhow::Error
shared project on unexpected room
Error message
shared project on unexpected room
What it means
share_project looks up the room participant row for the calling connection and asserts its room_id equals the room being shared on; a mismatch means the connection is participating in a different room than the one named in the request — an inconsistent or malicious request, not a user error.
Source
Thrown at crates/collab/src/db/queries/projects.rs:56
) -> Result<TransactionGuard<(ProjectId, proto::Room)>> {
self.room_transaction(room_id, |tx| async move {
let participant = room_participant::Entity::find()
.filter(
Condition::all()
.add(
room_participant::Column::AnsweringConnectionId
.eq(connection.id as i32),
)
.add(
room_participant::Column::AnsweringConnectionServerId
.eq(connection.owner_id as i32),
),
)
.one(&*tx)
.await?
.context("could not find participant")?;
if participant.room_id != room_id {
return Err(anyhow!("shared project on unexpected room"))?;
}
if !participant
.role
.unwrap_or(ChannelRole::Member)
.can_edit_projects()
{
return Err(anyhow!("guests cannot share projects"))?;
}
let project = project::ActiveModel {
room_id: ActiveValue::set(Some(participant.room_id)),
host_user_id: ActiveValue::set(Some(participant.user_id)),
host_connection_id: ActiveValue::set(Some(connection.id as i32)),
host_connection_server_id: ActiveValue::set(Some(ServerId(
connection.owner_id as i32,
))),
id: ActiveValue::NotSet,
windows_paths: ActiveValue::set(windows_paths),View on GitHub (pinned to f4178619ac)
Solutions
- Ensure the share request targets the room the connection actually joined
- Rejoin the intended room and retry sharing
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/collab/src/db/queries/projects.rs:56 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/0857ee8cc5c96573.
Report an issue: GitHub.