---
title: "langsmith Breaking Changes on PyPI | Since.dev"
description: "What each langsmith release removed, renamed or changed: 226 breaking changes in 57 versions on PyPI, each with its source."
canonical_url: https://since.dev/packages/pypi/langsmith
last_updated: 2026-06-18
---

# langsmith breaking changes

Every breaking API change we have recorded in langsmith on PyPI: 226 breaking changes in 57 versions. Below are its newest 6 versions, removals and renames first, each with its source.

Newest change June 18, 2026

## 0.8.17

4 breaking changes, first published June 18, 2026.

- **Removed** `langsmith.sandbox.aws_auth_proxy_config`  

langsmith.sandbox.aws_auth_proxy_config was removed in langsmith 0.8.17 [pypi.org](https://pypi.org/project/langsmith/0.8.17/)
- **Signature changed** `langsmith.AsyncClient.__init__`  

Was def \_\_init\_\_(self, api_url: Optional\[str\] = None, api_key: Optional\[str\] = None, timeout_ms: Optional\[Union\[int, tuple\[Optional\[int\], Optional\[int\], Optional\[int\], Optional\[int\]\]\]\] = None, retry_config: Optional\[Mapping\[str, Any\]\] =... [pypi.org](https://pypi.org/project/langsmith/0.8.17/)
- **Signature changed** `langsmith.sandbox.SandboxClient.create_sandbox`  

Was def create_sandbox(self, snapshot_id: Optional\[str\] = None, \*, snapshot_name: Optional\[str\] = None, name: Optional\[str\] = None, timeout: int = 30, wait_for_ready: bool = True, idle_ttl_seconds: Optional\[int\] = None... [pypi.org](https://pypi.org/project/langsmith/0.8.17/)
- **Signature changed** `langsmith.sandbox.SandboxClient.sandbox`  

Was def sandbox(self, snapshot_id: Optional\[str\] = None, \*, snapshot_name: Optional\[str\] = None, name: Optional\[str\] = None, timeout: int = 30, idle_ttl_seconds: Optional\[int\] = None, delete_after_stop_seconds: Optional\[int\] = None, vcpus... [pypi.org](https://pypi.org/project/langsmith/0.8.17/)

## 0.8.15

1 breaking change, first published June 12, 2026.

- **Signature changed** `langsmith.sandbox.CommandHandle.__init__`  

Was def \_\_init\_\_(self, message_stream: Iterator\[dict\], control: Optional\[\_WSStreamControl\], sandbox: Sandbox, \*, command_id: str = '', stdout_offset: int = 0, stderr_offset: int = 0) -> None; now def \_\_init\_\_(self, message_stream... [pypi.org](https://pypi.org/project/langsmith/0.8.15/)

## 0.8.12

2 breaking changes, first published June 10, 2026.

- **Removed** `langsmith.async_client.PLATFORM_HUB`  

langsmith.async_client.PLATFORM_HUB was removed in langsmith 0.8.12 [pypi.org](https://pypi.org/project/langsmith/0.8.12/)
- **Removed** `langsmith.client.PLATFORM_HUB`  

langsmith.client.PLATFORM_HUB was removed in langsmith 0.8.12 [pypi.org](https://pypi.org/project/langsmith/0.8.12/)

## 0.8.11

1 breaking change, first published June 8, 2026.

- **Signature changed** `langsmith.AsyncClient.create_feedback`  

Was async def create_feedback(self, run_id: Optional\[ls_client.ID_TYPE\], key: str, score: Optional\[float\] = None, value: Union\[float, int, bool, str, dict, None\] = None, comment: Optional\[str\] = None, trace_id: Optional\[ls_client.ID_TYPE\]... [pypi.org](https://pypi.org/project/langsmith/0.8.11/)

## 0.8.10

5 breaking changes, first published June 8, 2026.

- **Signature changed** `langsmith.AsyncClient.create_feedback`  

Was async def create_feedback(self, run_id: Optional\[ls_client.ID_TYPE\], key: str, score: Optional\[float\] = None, value: Union\[float, int, bool, str, dict, None\] = None, comment: Optional\[str\] = None, \*\*kwargs: Any) -> ls_schemas.Feedback... [pypi.org](https://pypi.org/project/langsmith/0.8.10/)
- **Signature changed** `langsmith.client.ComparativeExperimentResults.__init__`  

Was def \_\_init\_\_(self, results: dict, examples: Optional\[dict\[uuid.UUID, schemas.Example\]\] = None); now def \_\_init\_\_(self, results: dict, examples: Optional\[dict\[uuid.UUID, schemas.Example\]\] = None, comparative_experiment... [pypi.org](https://pypi.org/project/langsmith/0.8.10/)
- **Signature changed** `langsmith.Client.create_project`  

Was def create_project(self, project_name: str, \*, description: Optional\[str\] = None, metadata: Optional\[dict\] = None, upsert: bool = False, project_extra: Optional\[dict\] = None, reference_dataset_id: Optional\[ID_TYPE\] = None) ->... [pypi.org](https://pypi.org/project/langsmith/0.8.10/)
- **Signature changed** `langsmith.sandbox.SandboxClient.create_sandbox`  

Was def create_sandbox(self, snapshot_id: Optional\[str\] = None, \*, snapshot_name: Optional\[str\] = None, name: Optional\[str\] = None, timeout: int = 30, wait_for_ready: bool = True, idle_ttl_seconds: Optional\[int\] = None... [pypi.org](https://pypi.org/project/langsmith/0.8.10/)
- **Signature changed** `langsmith.sandbox.SandboxClient.sandbox`  

Was def sandbox(self, snapshot_id: Optional\[str\] = None, \*, snapshot_name: Optional\[str\] = None, name: Optional\[str\] = None, timeout: int = 30, idle_ttl_seconds: Optional\[int\] = None, delete_after_stop_seconds: Optional\[int\] = None, vcpus... [pypi.org](https://pypi.org/project/langsmith/0.8.10/)

## 0.8.9

1 breaking change, first published June 3, 2026.

- **Signature changed** `langsmith.sandbox.SandboxClient.create_snapshot_from_dockerfile`  

Was def create_snapshot_from_dockerfile(self, name: str, dockerfile: Union\[str, os.PathLike\[str\]\], fs_capacity_bytes: int, \*, context: Union\[str, os.PathLike\[str\]\] = '.', build_args: Optional\[Mapping\[str, str\]\] = None, target... [pypi.org](https://pypi.org/project/langsmith/0.8.9/)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
