pinecone breaking changes
Every breaking API change we have recorded in pinecone on PyPI: 1,240 breaking changes in 3 versions. Below are its newest 3 versions, removals and renames first, each with its source.
Newest change May 4, 2026

On this page
9.0.0
- Removed
Assistant ships in the core package, so the separate plugin and its discovery system are no longer used. github.com - Removed
pinecone_plugins.assistant
Assistant model imports must come from pinecone.models.assistant instead. github.com - Removed
pinecone_plugins.assistant.assistant.assistant.Assistant
Code that constructed the plugin class directly has no v9 equivalent. Use pc.assistants instead. github.com - Removed
pinecone.adapters
pinecone.adapters was removed in pinecone 9.0.0 pypi.org - Removed
pinecone.admin.admin.API_VERSION
pinecone.admin.admin.API_VERSION was removed in pinecone 9.0.0 pypi.org - Removed
pinecone.admin.admin.ApiClient
pinecone.admin.admin.ApiClient was removed in pinecone 9.0.0 pypi.org - Removed
pinecone.admin.admin.get_user_agent
pinecone.admin.admin.get_user_agent was removed in pinecone 9.0.0 pypi.org - Removed
pinecone.admin.admin.OAuthApi
pinecone.admin.admin.OAuthApi was removed in pinecone 9.0.0 pypi.org - Removed
pinecone.admin.admin.OpenApiConfiguration
pinecone.admin.admin.OpenApiConfiguration was removed in pinecone 9.0.0 pypi.org - Removed
pinecone.admin.admin.TokenRequest
pinecone.admin.admin.TokenRequest was removed in pinecone 9.0.0 pypi.org
And 779 more in this version.
8.0.0
- Signature changed
pinecone.admin.Admin.__init__
Was def __init__(self, client_id: Optional[str] = None, client_secret: Optional[str] = None, additional_headers: Optional[Dict[str, str]] = None); now def __init__(self, client_id: str | None = None, client_secret: str | None = None... pypi.org - Signature changed
pinecone.admin.eraser.project_eraser.Pinecone.Index
Was def Index(self, name: str = '', host: str = '', **kwargs) -> Index; now def Index(self, name: str = '', host: str = '', **kwargs) -> 'Index'. pypi.org - Signature changed
pinecone.admin.eraser.resources.backup.Pinecone.Index
Was def Index(self, name: str = '', host: str = '', **kwargs) -> Index; now def Index(self, name: str = '', host: str = '', **kwargs) -> 'Index'. pypi.org - Signature changed
pinecone.admin.eraser.resources.collection.Pinecone.Index
Was def Index(self, name: str = '', host: str = '', **kwargs) -> Index; now def Index(self, name: str = '', host: str = '', **kwargs) -> 'Index'. pypi.org - Signature changed
pinecone.admin.eraser.resources.index.Pinecone.Index
Was def Index(self, name: str = '', host: str = '', **kwargs) -> Index; now def Index(self, name: str = '', host: str = '', **kwargs) -> 'Index'. pypi.org - Signature changed
pinecone.admin.resources.api_key.parse_non_empty_args
Was def parse_non_empty_args(args: List[Tuple[str, Any]]) -> Dict[str, Any]; now def parse_non_empty_args(args: list[tuple[str, Any]]) -> dict[str, Any]. pypi.org - Signature changed
pinecone.admin.resources.ApiKeyResource.create
Was def create(self, project_id: str, name: str, description: Optional[str] = None, roles: Optional[List[str]] = None); now def create(self, project_id: str, name: str, description: str | None = None, roles: List[str] | None = None). pypi.org - Signature changed
pinecone.admin.resources.project.parse_non_empty_args
Was def parse_non_empty_args(args: List[Tuple[str, Any]]) -> Dict[str, Any]; now def parse_non_empty_args(args: list[tuple[str, Any]]) -> dict[str, Any]. pypi.org - Signature changed
pinecone.admin.resources.ProjectResource.create
Was def create(self, name: str, max_pods: Optional[int] = None, force_encryption_with_cmek: Optional[bool] = None); now def create(self, name: str, max_pods: int | None = None, force_encryption_with_cmek: bool | None = None). pypi.org - Signature changed
pinecone.admin.resources.ProjectResource.describe
Was def describe(self, project_id: Optional[str] = None, name: Optional[str] = None); now def describe(self, project_id: str | None = None, name: str | None = None). pypi.org
And 416 more in this version.
7.0.0
- Signature changed
pinecone.data.features.inference.Inference.__init__
Was def __init__(self, config, openapi_config, **kwargs) -> None; now def __init__(self, config: Config, openapi_config: OpenApiConfiguration, pool_threads: int = 1, **kwargs) -> None. pypi.org - Signature changed
pinecone.data.features.inference.Inference.config
Was config; now config: Config. pypi.org - Signature changed
pinecone.data.features.inference.Inference.openapi_config
Was openapi_config; now openapi_config: OpenApiConfiguration. pypi.org - Signature changed
pinecone.data.features.inference.Inference.pool_threads
Was pool_threads; now pool_threads: int. pypi.org - Signature changed
pinecone.DescribeIndexStatsResponse
Was from pinecone.data import DescribeIndexStatsResponse; now from pinecone.db_data.models import IndexDescription as DescribeIndexStatsResponse. pypi.org - Signature changed
pinecone.FetchResponse
Was class FetchResponse; now from pinecone.db_data.models import FetchResponse. pypi.org - Signature changed
pinecone.ImportErrorMode
Was class ImportErrorMode(Enum); now from pinecone.db_data.resources.sync.bulk_import import ImportErrorMode. pypi.org - Signature changed
pinecone.openapi_support.ApiClient.pool
Was pool; now pool: ThreadPool. pypi.org - Signature changed
pinecone.openapi_support.ApiClient.threadpool_executor
Was threadpool_executor; now threadpool_executor: ThreadPoolExecutor. pypi.org - Signature changed
pinecone.Pinecone
Was class Pinecone(PineconeDBControlInterface, PluginAware); now class Pinecone(PluginAware, LegacyPineconeDBControlInterface). pypi.org
And 15 more in this version.
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The 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.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp