Skip to content

release: 0.87.0#1264

Merged
stainless-app[bot] merged 19 commits intomainfrom
release-please--branches--main--changes--next
Mar 31, 2026
Merged

release: 0.87.0#1264
stainless-app[bot] merged 19 commits intomainfrom
release-please--branches--main--changes--next

Conversation

@stainless-app
Copy link
Copy Markdown
Contributor

@stainless-app stainless-app bot commented Mar 19, 2026

Automated Release PR

0.87.0 (2026-03-31)

Full Changelog: v0.86.0...v0.87.0

Features

  • client: add error type field to APIStatusError (#1587) (dd563c0)
  • internal: implement indices array format for query and form serialization (11a6244)

Bug Fixes

  • honor api_exclude in async transform path (#1612) (8172232), closes #1610
  • memory: return resolved path from async _validate_path (7b0add3)
  • memory: use restrictive file mode for memory files (47ba5b8)
  • sanitize endpoint path params (98f60e4)
  • transform schema: support enums (#1275) (5c088ab)

Chores

  • ci: run builds on CI even if only spec metadata changed (194c050)
  • ci: skip lint on metadata-only changes (03e2ab9)
  • internal: update gitignore (94ede14)
  • tests: bump steady to v0.19.4 (2d6d58f)
  • tests: bump steady to v0.19.5 (8fb439a)
  • tests: bump steady to v0.19.6 (76da5fd)
  • tests: bump steady to v0.19.7 (bfa40e5)
  • tests: bump steady to v0.20.1 (4fd9446)

This pull request is managed by Stainless's GitHub App.

The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.

For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.

🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions

@stainless-app stainless-app bot requested a review from a team as a code owner March 19, 2026 19:04
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch 2 times, most recently from 384ceb4 to a9eda94 Compare March 20, 2026 13:52
@stainless-app
Copy link
Copy Markdown
Contributor Author

stainless-app bot commented Mar 20, 2026

🧪 Testing

To try out this version of the SDK:

pip install 'https://pkg.stainless.com/s/anthropic-python/7b0add32bd5fc59ad0fa277ef6982ee1df1eed7a/anthropic-0.86.0-py3-none-any.whl'

Expires at: Thu, 30 Apr 2026 17:50:35 GMT
Updated at: Tue, 31 Mar 2026 17:50:35 GMT

@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch 9 times, most recently from 7b39fc8 to 15328c8 Compare March 23, 2026 18:04
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch 7 times, most recently from d84f1e1 to ad932b7 Compare March 26, 2026 19:29
dtmeadows and others added 8 commits March 26, 2026 16:51
The sync transform path was updated to pass `exclude=getattr(data,
"__api_exclude__", None)` to `model_dump()`, but the async path was
missed. This caused `parsed_output` to leak into API requests when
using the async client for multi-turn structured output conversations,
resulting in a 400 error.

Closes #1610
* add ability to test overloads are in sync on tool runner

* formt

* fix

* use typing_extensions.get_overloads() for broader python version support

Co-Authored-By: Claude Code (${CLAUDE_PROJECT_DIR}) <noreply@anthropic.com>

* fix import ordering for ruff

Co-Authored-By: Claude Code (${CLAUDE_PROJECT_DIR}) <noreply@anthropic.com>

* Update tests/lib/streaming/test_beta_messages.py

Co-authored-by: Robert Craigie <robert@craigie.dev>

* format

* format again

---------

Co-authored-by: Claude Code (${CLAUDE_PROJECT_DIR}) <noreply@anthropic.com>
Co-authored-by: Robert Craigie <robert@craigie.dev>
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch 2 times, most recently from baeeed7 to a2354ec Compare March 27, 2026 05:30
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch 4 times, most recently from cea699c to 6c6d6cd Compare March 30, 2026 05:40
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch 2 times, most recently from e19636f to fa0e83c Compare March 31, 2026 05:31
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch from fa0e83c to 477de32 Compare March 31, 2026 13:28
* fix(memory): use restrictive file mode for memory files

Extract _FILE_CREATE_MODE constant set to 0o600 (owner read/write only),
replacing the previous 0o666. In environments with a permissive umask (e.g.
Docker where umask is often 0o000), 0o666 would make memory files
world-readable or even world-writable.

* fix(client): update mkdir calls to use 0o700
* fix(memory): return resolved path from async _validate_path to close TOCTOU window

The async _validate_path was returning the unresolved path while the sync
version correctly returned the resolved path, allowing a symlink swap between
validation and use.

* test(memory): add test for async _validate_path symlink TOCTOU fix

Verifies that the async _validate_path returns the resolved real path
rather than the unresolved symlink path, closing the TOCTOU window.

* fix: remove unused temp_directory parameter from test
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch from 477de32 to cf345c9 Compare March 31, 2026 17:49
@stainless-app stainless-app bot force-pushed the release-please--branches--main--changes--next branch from cf345c9 to 817acee Compare March 31, 2026 17:50
@stainless-app stainless-app bot merged commit ab0c446 into main Mar 31, 2026
11 checks passed
@stainless-app
Copy link
Copy Markdown
Contributor Author

stainless-app bot commented Mar 31, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Mid-stream SSE errors get status_code=200 instead of the actual error code

4 participants