Tracing project disappears from Tracing tab after an evaluation script upsert
Last updated: August 7, 2026
Symptom
A LangSmith tracing project stops showing up in the workspace's Tracing tab. The project was not deleted: its traces are intact, and the project still opens from its direct URL (by project ID). It now lives under Datasets & Experiments → <dataset name> → <project name>.
The audit log shows update_tracer_session events for the project around the time it disappeared, and no delete_tracer_session or delete_tracer_sessions events.
Cause
An evaluation or experiment script called client.create_project() with the name of an existing live tracing project, a reference_dataset_id, and upsert=True. Because the name matched an existing session and upsert was on, LangSmith updated the existing tracing project in place and attached it to the dataset. That re-parented the project from Tracing into Datasets & Experiments, hiding it from the Tracing tab without deleting it.
The typical trigger is an eval script reusing a production tracing project name (for example, the value of LANGSMITH_PROJECT) as the experiment project name.
Resolution
Platform fix (LangSmith SaaS)
A server-side guard now prevents session upserts from changing a project's type in either direction (tracing project ↔ experiment). Upserting a reference_dataset_id onto an existing tracing project returns a LangSmithConflictError and leaves the existing project unchanged. This applies to both SDK and direct API calls.
Relevant version: LangSmith server 0.17.5. Deployments older than this (self-hosted LangSmith before 0.16) are still exposed to the conversion behavior.
Recover an already-converted project
Projects converted before the guard was released are not restored automatically.
Recreate the tracing project using the same name. New traces will route to the new project.
Historical traces from the converted project stay accessible by opening the project directly via its UUID-based URL, or under Datasets & Experiments.
Prevent this in evaluation scripts
Use a project name that is dedicated to evaluation and does not match any live tracing project. Do not pass a production tracing project name as project_name when also supplying reference_dataset_id.
Safe pattern:
client.create_project(
"my-eval-experiment-run-001",
reference_dataset_id=dataset.id,
upsert=True,
)Unsafe pattern (reuses a live tracing project name):
import os
project_name = os.environ["LANGSMITH_PROJECT"] # e.g. "production-traces"
client.create_project(
project_name,
reference_dataset_id=dataset.id,
upsert=True,
)Diagnosing with the audit log
If a tracing project disappears and you suspect deletion, check the audit log for update_tracer_session on the project at the time it vanished. An update event (with no matching delete) means the project was re-typed, not deleted. The entry identifies the user or API key that initiated the change.