Skip to content
Agents tracked: 258 Downloads (7d): 219M up 6.1% GitHub stars: 5.5M VS Code installs: 148M Releases (7d): 293 Agent status: 2 with issues Updated Oct 7, 2026

Haystack changelog: what's new each month

Every stable Haystack release summarised by month: the highlights, new features, improvements, fixes and anything you need to act on. 3 months covered; the current month updates daily.

October 2026 · so far

1 release: 3.3.0

October brought stability improvements and critical security updates to Haystack, with fixes addressing document retrieval, text processing, and conversation handling in pipelines.

Action needed
  • anyio requirement updated to >=4.14.2 for security purposes.

Highlights

  • BM25 retrieval now correctly filters to documents containing at least one query term.
  • Fixed BM25 tokenization for Chinese, Japanese, and Korean text.
  • Security: updated anyio requirement to address CVE-2026-63374.
  • ChatPromptBuilder now preserves all content parts, not just the first one.
  • Pipeline connections with Callable types now work correctly.

Improved

  • TextCleaner.run raises a clear TypeError with helpful messages when inputs are invalid.
  • BM25 tokenization regex updated to split CJK characters into individual tokens for better bare-term queries.

Fixed

  • BM25 retrieval filtering in InMemoryDocumentStore for CJK languages.
  • Pipeline.connect() TypeError when sockets use Callable[..., T] annotations.
  • ChatPromptBuilder dropping non-text content parts when template is a list of ChatMessage objects.
  • CompactionHook.close() and closeasync() not releasing token counter resources.
  • ConfirmationHook dropping messages after the last user or tool message during conversation rewrite.

September 2026

2 releases: 3.1.1 → 3.2.0

September brought refinements to message handling across multiple integrations, along with significant changes to how tools and components are managed in Haystack. A new token budget control system and conversation compaction capabilities were added to help manage resource usage.

Action needed
  • The + operator for combining Toolsets has been removed; pass Toolsets as a list instead.
  • Toolset.add() now accepts only single Tools, not other Toolsets; use list syntax for combining.
  • Serialized OutputAdapter and ConditionalRouter components with Jinja custom filters must be loaded with Pipeline.load(..., unsafe=True).

Highlights

  • Tool combination syntax changed: use lists instead of the + operator or Toolset.add() for multiple tools.
  • New experimental TokenBudgetHook lets you cap tokens spent in an Agent run.
  • Added stoprun control flag to let hooks end runs cleanly with custom reasons.
  • New SummarizationCompactor progressively summarizes conversations to fit token budgets.
  • Pipeline.addcomponents() method added to register multiple components at once.

New

  • SummarizationCompactor component (experimental) for progressive conversation summarization within token limits.
  • TokenBudgetHook (experimental) to enforce token spending caps on Agent runs.
  • stoprun control flag allowing hooks to end Agent runs gracefully with custom exit reasons.
  • Pipeline.addcomponents() method to register multiple component name-to-instance mappings in one call.

Improved

  • OpenAI Chat Completions and Responses converters now handle assistant messages with no content parts without raising errors.
  • Hugging Face message converter now handles empty assistant messages gracefully by sending them with empty content.
  • toolresultoffloaded meta key now consistently holds a list of store references to support results spanning multiple stores.

Fixed

  • OpenAI Chat Completions converter no longer raises when receiving assistant messages with no content from discarded malformed tool calls.
  • Hugging Face converter error handling for assistant messages with no content parts.

August 2026

1 release: 3.1.0

Haystack 3.1.0 brings improved agent visibility and control, with new cloning capabilities, better resource management, and enhanced PDF handling. The month focused on making agents easier to debug, route, and integrate into complex workflows.

Action needed
  • OutputAdapter and ConditionalRouter components with custom Jinja filters must now be loaded with Pipeline.load(..., unsafe=True).
  • exitreason is now a reserved state key on Agent; custom state schema keys with this name must be renamed or Agent initialization will raise ValueError.

Highlights

  • Agents now report an exitreason output showing why a run stopped, enabling better downstream routing and conditional logic.
  • New Agent.clone() method lets you create copies with modified configuration without rebuilding from scratch.
  • PDF components now support link parsing and formatting, matching existing DOCX functionality.
  • Components using document stores provide close() methods for proper resource cleanup.
  • Hook invocation tracing added to help monitor and optimize agent hook performance.

New

  • Agent.clone() method to create agent copies with optionally replaced initialization parameters.
  • exitreason output on Agent runs reporting the reason for stopping (text, tool call, max iterations, etc.).
  • linkformat parameter for PyPDFToDocument and PDFMinerToDocument to parse and format PDF annotation links.
  • close() and closeasync() methods on document store components for resource cleanup.
  • Tracing spans for every Agent hook invocation with hook point, name, and type details.
  • HAYSTACKUNSAFEDESERIALIZATION environment variable as a process-wide alternative to unsafe=True parameter.

Improved

  • PDF link parsing now available across all PDF extraction components with consistent formatting options.

Summaries are written automatically from the official release notes (full changelog ↗); check the original notes before relying on a detail. Haystack: pricing, features and alternatives · All changelogs