client_credentials apps must name a service account. The Helm chart requires a Qdrant API key. Code-graph routes need a new code:read scope.
Breaking changes & upgrade notes
- Back up the graph database first. Permissions and the Knowledge Hub use a reworked graph model, and the migration is one-way. Hierarchy now lives on one edge (
NODE_RELATIONon Neo4j,nodeRelationson ArangoDB), links between records move to their own edge (RECORD_LINK/recordLinks), and a nested record inherits from its hierarchy parent instead of from its record group. The connector service migrates an existing graph when it starts. The edge rename runs first and is the only migration that can stop the service; the rest run in the background with retries. Until they finish, a deployment lists less than it should, never more. Run a full sync of each connector after upgrading: it writes what an old graph does not record, such as per-node access rules and records nested under a record with its own grants. A release older than 1.0.0 cannot read the migrated graph (#4255 — @shrikant-pipeshub). - Some access results differ from 0.10.0. A record whose parent is in another record group (a Jira story under an epic of another project) keeps its own project’s audience. An item shared with a user on its own, whose containers they cannot open, is listed directly under its connector. A grant on one connector never admits a record of another connector. A search whose permission check cannot run answers “permission check unavailable” instead of an empty result. The Collection roles
ORGANIZERandFILEORGANIZERare read asREADER, so re-grantWRITERwhere those users must still create folders or delete files. Nothing inside a connector or Collection is visible to a user who does not pass its gate: a grant on a record inside a Collection the user holds no grant on no longer opens that record, so review such grants before upgrading (#4255 — @shrikant-pipeshub). - Saved agents and knowledge sources: an agent whose knowledge source lists
filters.recordGroupsorfilters.recordsnow searches only those nodes. The lists were stored but not applied before, so such an agent becomes narrower on upgrade. To keep searching the whole source, tick the whole source again in the agent builder, or clear the lists. A source whose storedfilterscannot be read is no longer searched at all; re-save the agent to repair it (#4255 — @shrikant-pipeshub). - Knowledge Hub API:
GET /api/v1/knowledgeBase/knowledge-hub/nodesand.../nodes/{parentType}/{parentId}page by a signedcursorand returnpagination.nextCursor/prevCursor.pagestill works up to page 50; deeper paging needs the cursor. Five connector-service record routes with no gateway caller are removed:GET /api/v1/records,GET /api/v1/kb/records,POST /api/v1/kb/{kbId}/records,POST /api/v1/kb/{kbId}/folder/{folderId}/recordsandGET /api/v1/kb/{kbId}/folder/{folderId}/user/{userId}(#4255 — @shrikant-pipeshub). - Sign-in: SAML single sign-on and generic OAuth/OIDC sign-in are removed, and Azure AD sign-in is now Microsoft sign-in. Password, email OTP, Google and Microsoft sign-in stay. On first start a migration moves workspaces that used the removed methods to password sign-in, and Workspace → Authentication lists the people who have no password yet. They can use “Forgot password” (needs SMTP), or the operator can print a set-password link with
node dist/scripts/set-password-link.js <email>in the backend container. See Upgrading to 1.0: sign-in (#4217 — @shekharkadyan). - Application identity: a new application that allows
client_credentials, or an existing one that gains that grant, must name the service account its tokens act as. Existing applications keep working; administrators can bind each one to a service account from its manage panel, which revokes its outstanding tokens (#4517, #4538 — @shekharkadyan). - Code graph: the code-graph REST routes and MCP tools need the new
code:readscope. OAuth tokens and personal access tokens issued before the upgrade get no code access until they are re-issued with it. If.envor Helm values setMCP_SCOPESexplicitly, addcode:read; without it the first-run bootstrap stops with “Scopes not allowed for this app: code:read”. Repositories indexed before the upgrade get a graph only when re-indexed, or on the next start withCODE_GRAPH_BACKFILL=trueon the connectors service (#3841 — @tushar1245). - GitHub and GitLab: “Index Test Files” is off by default, including on existing connectors. Test files are synced but not indexed until it is turned on; turning it on re-syncs the connector (#3841 — @tushar1245).
- Staged indexing: classification and named-entity extraction run as the
classifyandentitiesstages, on the new topicspipeline.classifyandpipeline.entities. On Kafka the indexing service creates both at startup; where its principal may not create topics, or the cluster needs more replicas, create them before upgrading. In split deployments, upgrade the Extraction service with or before the indexing service.DEFER_EXTRACTIONis removed. Rolling back to 0.10.0 on ArangoDB needs a data cleanup first; see Upgrading and rolling back in the indexing service guide (#3270 — @abhishekgml1991). - Helm:
qdrant.apiKeyno longer defaults to the public valueapi_key, and the chart refuses to render without a real key (generate one withopenssl rand -hex 32).arango.auth.rootPasswordmay no longer beroot(#3893 — @abhishekgml1991). - Connector API:
POST /connectors/:connectorId/filtersis deprecated and logs a warning on each call. UsePUT /connectors/:connectorId/config/filters-sync. The route is removed in a later release (#4263 — @shekharkadyan). - Defaults: focused reading (
TARGETED_RETRIEVAL), timeline search (TIMELINE_SUMMARIES) and MCP servers (ENABLE_MCP) are on by default. A workspace that savedENABLE_MCPkeeps its saved value. Neo4j writes are atomic by default (NEO4J_EXPLICIT_TRANSACTIONS=true) (#4343, #4349, #4430, #4484). - Experimental features stay opt-in: knowledge-base push (
ENABLE_KB_PUSH), the PostgreSQL infrastructure backends and their migration tooling. Artifact-set writes and reads are gated separately (#4764, #4704, #4705, #4706, #4574, #4599 — @abhishekgml1991).
Defaults & new settings
Highlights
Code graph for code repositories
GitHub and GitLab repositories are indexed into a navigable graph of files, symbols and calls, and agents get tools to explore it and analyze the impact of a change. Later work improved TypeScript call resolution, extended impact traversal to five levels and path searches to eight hops. The routes and MCP tools are gated by a newcode:read scope, and repositories indexed before the upgrade are re-indexed on request or with CODE_GRAPH_BACKFILL=true (#3841, #4809, #4844, #4926 — @tushar1245).
Retrieval: one context pipeline, focused reading and timeline search
Search results reach the model through one relevance-ordered context pipeline, with deeper fusion, record-level result cuts, better exact-text matching and better handling of images, lists, tables and neighboring passages (#3489, #4143, #4146, #4254). Agents can read only the part of a record that matters, search a date range period by period, and use timeline search automatically for spans longer than a month; focused reading and timeline search are now on by default (#4291, #4296, #4373, #4386, #4343, #4349 — @shekharkadyan).POST /api/v1/retrieve returns chunks with citations without storing a conversation (#4732 — @shekharkadyan).
One access check for permissions, and a faster Knowledge Hub
One batch access check now decides record open, search filtering and the agent tools, and the Knowledge Hub lists by walking the record hierarchy with per-node access rules and cursor paging. Connector sync writes record batches in real transactions of 100 (#4255 — @shrikant-pipeshub). Around it, Jira issue-security levels are enforced, SharePoint and OneDrive sharing and inherited access are corrected, stored record access rules are preserved, and team grants no longer make knowledge-base members owners (#4738, #4383, #4350, #4772, #4767, #4626). Synchronization is safer too: interrupted full syncs resume, cleanup waits for the sync to finish, and existing access is kept when a permission read fails (#4081, #4112, #4119, #4485, #3732).Staged indexing
A record is searchable as soon as its vectors are written. Classification and named-entity extraction then run as their ownclassify and entities stages, each with its own retries, behind one LLM gateway that caps, times out and circuit-breaks indexing-time model calls. A slow or unavailable model no longer stalls unrelated records, and a retry no longer re-parses and re-embeds the record (#3270, #4495 — @abhishekgml1991). Failed named-entity extraction can be counted and retried from the stats panels (#4467, #4564 — @abhishekgml1991), and stage status, connector fairness and recovery of stranded work are improved (#4194, #4215 — @shekharkadyan).
Custom API actions
An organization’s REST APIs can be connected from an OpenAPI specification and called by agents as actions. Users can add personal actions and connect actions directly from chat (#4435, #4324, #4227 — @tushar1245).Sign-in and OAuth for 1.0
SAML and generic OAuth sign-in are removed, and existing workspaces move to password sign-in on their own (#4217 — @shekharkadyan). OAuth gets granular connected-app consent, atomic refresh-token rotation, single-use authorization codes, device-token revocation and server-side session termination on logout (#4451, #4777, #4776, #4647, #4790), and newclient_credentials apps act as a named service account (#4517, #4538 — @shekharkadyan).
Zendesk connector, and a connector audit
A Zendesk connector syncs tickets, Help Center content, users, groups and organizations (#2836 — @anupPradhan0). Nearly every connector went through a checklist audit, fixing pagination, deletions, partial failures, credentials, failure notifications and access synchronization; the fixes are listed under Bug fixes.New features
- Code graph — index repositories into a navigable graph with agent tools for exploration and impact analysis (#3841, #4809 — @tushar1245). See the highlight.
- Zendesk connector — sync tickets, Help Center content, users, groups and organizations (#2836 — @anupPradhan0). See the highlight.
- Agents — custom API actions from an OpenAPI specification, personal actions, and connecting actions from chat (#4435, #4324, #4227 — @tushar1245). See the highlight.
- Search & chat — read only the relevant part of a record, search a date range period by period, and use timeline search automatically for spans over a month (#4291, #4296, #4373, #4386 — @shekharkadyan). See the highlight.
- Search & chat — scope a chat or a search to any part of the hierarchy: the source picker is a tree of apps, collections, record groups, folders and records, and a saved agent’s source or a project’s scope can be limited the same way (#4255 — @shrikant-pipeshub).
- Search & chat — named-entity recognition, linking and entity search behind feature switches; cross-connector links between Slack messages, pull requests, tickets and pages; incoming and outgoing record references in chat context (#3975, #4130, #4145, #4199, #4200, #4201).
- Search & chat — created/updated date filters, passage caps per record, optional source diversity, query-rewrite bypass and
saveHistory: falsein the request body (#4189, #4187, #4408, #4293, #4853, #4863 — @shekharkadyan). - Search & chat — a chat request can ask for a short wait on keyword search (#4192 — @shekharkadyan); search names the matches a date filter left out (#4410 — @shekharkadyan).
- Search & chat — answer composition, thorough-retrieval and multi-step rules, and reciprocal-rank fusion of keyword hits, behind
HIGH_ACCURACY_MODEswitches (#4144, #4096, #4122 — @abhishek-pipeshub). - API —
POST /api/v1/retrievereturns chunks with citations without storing them; record-content APIs support partial reads, complete Slack threads and extracting the passages that answer a question (#4732, #4186, #4917 — @shekharkadyan). - Agents — exact calculations, date differences and text counts; Google Docs and Sheets actions are back (#4221, #4125, #4250).
- Agents — service-account identity, service agents that search knowledge as a service account or a chosen identity, and custom expiry for service-account tokens; only an administrator may bind an agent to a service account (#4118, #4634, #4645, #4762, #4758).
- Models — decision-model configuration and clients for OpenAI Decisions, Azure OpenAI and TypeSafe Jev; more reliable web search and page reading with more providers, and deep-research support for API clients (#4261, #4300).
- MCP — cached tools, per-tool approvals and better sign-in and scope requests; agent tokens can create collections and upload files when authorized (#4443, #4474, #4636, #4781).
- Indexing — classification and named-entity extraction run as stages behind an LLM gateway (#3270 — @abhishekgml1991). See the highlight.
- Indexing — named-entity extraction can be retried on its own (
POST /api/v1/connectors/{id}/reindexwithstages: ["entities"]), and the record page and stats panels show its status (#4467, #4564 — @abhishekgml1991). - Knowledge base — push application/blocks records through the knowledge-base API behind
ENABLE_KB_PUSH(#4764 — @abhishekgml1991). - Storage & data layer — artifact sets per content revision, batch presigning, enrichment sidecars and typed record properties, with the write/read rollout feature-gated (#4518, #4592, #4618 — @abhishekgml1991).
- Storage & data layer — opt-in PostgreSQL schema and migration tooling, and PostgreSQL-backed key-value stores, queues and shared state (#4704, #4705, #4706 — @abhishekgml1991).
- Indexing — PdfPlumber support: text PDFs over 30 pages go to PdfPlumber and other PDFs to Docling, and every Compose file can turn it on (#4327, #4803, #4554).
- GitHub and GitLab connectors — chosen-branch sync, diff-based PR/MR indexing and updated-since filtering for GitHub issues and PRs (#4755, #4140, #4214).
- OneDrive connector — certificate sign-in (#4358 — @harshit-pipeshub).
- Connectors — file-type exclusion filters, including Drupal Wiki attachments (#4075, #4769).
- Connectors — shadow user permissions for Dropbox, Notion, ServiceNow, Salesforce, Zoom, Google Workspace and Slack (#4258 — @darshangodase).
- Web connector — checkpoint-based resume, sitemap discovery, selective browser rendering and browser recovery (#4219 — @abhishek-pipeshub).
- UI — export chats, download tables as CSV and code as files, fork conversations, pin chats, and edit the last question and attachments before regenerating (#4253, #4225, #4363, #4424 — @Pranjal-wq).
- UI — share an agent chat read-only with other people in the organization; every shared chat, agent or not, stays view-only for its recipients (#4453, #4496, #4608). What a recipient sees is described under Security fixes.
- UI — share an artifact with teammates; owners can delete agent-created artifacts, which are also cleaned up with their chat (#4212, #4218).
- UI — per-conversation drafts, day labels, a jump-to-newest button, completion notifications for other chats, and executed SQL in tool cards (#4229, #4239, #4249, #4180).
- UI — each record’s status and date in chat, and the status of the records it links (#4295 — @shekharkadyan); Jira, Linear and GitHub items are linked by their key (#4606 — @tushar1245); raw links show a short name (#4491 — @vishwjeet-pawar03).
- UI — classification and entity extraction appear as a collapsible “Data extraction with AI” section in stats (#4609 — @tushar1245).
- UI — Czech dashboard localization (#4301 — @rish231294).
- Admin & settings — sign-in and OAuth app secrets are masked under
HIDE_SECRET_CONFIGand revealed on request (#4023 — @vishwjeet-pawar03). - Admin & settings — a deployment can turn off the vector-store rebuild routes (#4317 — @shekharkadyan).
- Observability — optional retrieval and usage telemetry, model and tool timing, MCP client and channel attribution, and forwarding of user and group identity to an LLM gateway (#4124, #4084, #4713, #4428).
- Observability — indexing logs where each record’s time goes and warns when the worker loop is overloaded (#4044 — @shekharkadyan);
/healthreports indexing LLM slot use, wait and hold time (#4116 — @abhishek-pipeshub); signup channel (?ref=) and token issuance by client are recorded (#4739 — @shekharkadyan). - Deployment — installation into an existing single-zone EKS cluster with S3 (#4154 — @abhishekgml1991).
- Storage & data layer — database export and load default to the install’s only organization (#4798 — @abhishekgml1991).
Improvements
- Search & chat — relevance-ordered context, deeper fusion, record-level result cuts, better exact-text matching and better images, lists, tables and neighboring passages (#3489, #4143, #4146, #4254). See the highlight.
- Search & chat — focused reading and timeline search are on by default (#4343, #4349 — @shekharkadyan).
- Search & chat — searches keep the user’s original query (#4653 — @abhishekgml1991); people who can read only a small part of a connector get a full page of results (#4325 — @shekharkadyan).
- Search & chat — Qdrant search tuning and an opt-in BGE query instruction (#4486 — @abhishekgml1991).
- Search & chat — citations: better passage highlighting, source and collection labels, grouped citations and URL handling (#4167, #4237, #4248 — @vishwjeet-pawar03); a whole-record citation says whether it quotes or summarizes the record (#4190 — @shekharkadyan).
- Knowledge base — permissions on one access check, cursor listing and faster sync (#4255 — @shrikant-pipeshub). See the highlight.
- Code graph — better TypeScript call resolution, impact traversal to five levels and path searches to eight hops (#4844, #4926 — @tushar1245).
- Agents — tool rules support administrative controls; data-changing tools run while deleting tools ask for approval (#4246, #4256, #4313, #4326).
- Agents — model-sized context budgets, batch compaction, preserved current questions and recent tool results, clearer refusals and model failures, and better prompt caching and cost accounting (#4083, #4089, #4442, #4533, #4562, #4628, #4390, #4392).
- Agents — the agent loop sends the person’s words as the request and marks what it adds, and chat and the library share one context pipeline (#4534, #4535 — @abhishekgml1991).
- Agents —
fetch_recordis sized by characters, fits under the tool-result cap and shares it fairly between records (#4148, #4147 — @abhishek-pipeshub). - Agents —
search_toolsasks for capability keywords, tools exposeapp_name, and domain agents that never ran are dropped (#4122, #4123 — @abhishek-pipeshub). - Agents — UI-only tools are offered only when a UI client can answer them, and loop notes go on the tool footer (#4105, #4106 — @abhishek-pipeshub).
- Agents — service agents name whose knowledge access they search with, and agent-builder keys are named after service agents (#4543, #4621 — @shekharkadyan).
- Agents — service accounts are read as members wherever a role is read, user nodes record whether they are a person or a service account, and the UI tells someone where to find a service account (#4308, #4633, #4532 — @shekharkadyan).
- MCP — updated client and server integration, clearer body-limit errors and connection-limited browsing (#4003, #4644); the
/mcpendpoint moves to@pipeshub-ai/mcp4.4.0, which caps one tool call at 10,000 elements (#4151, #4209, #4357, #4406, #4458 — @shekharkadyan). - Models — better GPT-family tool calling and Bedrock support (#4464 — @abhishekgml1991).
- Connectors — better SMB validation and connection checks, and clearer OAuth and credential errors (#4358, #4075).
- Web connector — canonical URLs, rate-limit backoff and correct stored-page limits (#4219 — @abhishek-pipeshub).
- Indexing — per-stage retry and status reporting, connector fairness and better recovery of stranded work (#4194, #4215 — @shekharkadyan).
- Storage & data layer — obsolete revisions are retired (#4613 — @abhishekgml1991).
- Indexing — better scanned-PDF attachments, OCR fallback, table layout and password-protected-file detection (#4171, #4852, #4784).
- UI — better mobile and tablet layouts, iOS OAuth and tap targets, desktop OAuth, uploads and navigation, question cards, model editing, artifact filtering and file previews (#4479, #4808, #4297, #4570, #4169, #4925).
- UI — internal Labs feature flags sit behind an advanced accordion (#4166 — @Pranjal-wq); a “Model default” reasoning-effort option (#4203 — @shekharkadyan).
- Deployment — better health and version reporting, and index-memory warnings (#4181, #4305, #4871).
- Deployment — the README points at PipesHub Cloud and the Helm appVersion is refreshed (#4482 — @shekharkadyan); the local delegation log is kept 30 days, not 400 (#4481 — @shekharkadyan).
Bug fixes
- Search & chat — searchable content is kept during re-indexing, timeouts and failed retrievals are surfaced, grep hits no longer crowd out ranked passages, and caller timeouts are honored (#4222, #4088, #4251, #4352, #4741, #4586).
- Search & chat — six fixes for silent wrong or empty results in agent search tools (#4070 — @abhishek-pipeshub); results merge into the live records map and fan-out sources fuse by rank (#4102 — @abhishek-pipeshub).
- Search & chat — no more HTTP 500s on code snippets and Slack threads (#4053 — @shekharkadyan); a connector record is searchable soon after it finishes indexing (#4204 — @shekharkadyan); the result limit keeps a passage holding what the person typed (#4632 — @shekharkadyan).
- Search & chat — grep caps and truncation are computed after the access check (#4494 — @abhishekgml1991); placeholder records are not served as content (#4541 — @abhishekgml1991); grep-command generation survives a cut-off completion (#4094 — @abhishek-pipeshub).
- Search & chat — citations: dead source links built from record ids are stripped, links no longer nest inside a link’s target, a link’s text is kept, a dead link’s URL text is kept, a tiny URL inside a longer one is left alone, and inline CSS is parsed before hiding HTML text (#4079, #4090, #4374, #4382, #4587, #4751).
- Search & chat — citation URL handling for links with parentheses and mixed-script text (#4512, #4749).
- Search & chat — a streaming answer finishes when the browser refreshes (#4152 — @abhishekgml1991); record weekdays are worked out in the user’s time zone (#4113 — @shekharkadyan); knowledge-base upload times are not shown as document dates (#4387 — @abhishek-pipeshub).
- Search & chat — a late card answer stays on its card, question cards collapse once answered and sit in order, and regenerate asks a card turn again (#4129, #4455, #4786 — @Pranjal-wq).
- Search & chat — a sent first message is not kept as a draft, attachment uploads wait longer and are never sent twice, and a stopped reply that asked a question shows no “Stopped” marker (#4425, #4172, #4763).
- Search & chat — the latest rating shows after reload, the answer can be copied after a question card, and a conversation is deleted in one transaction on a replica set (#4779, #4778).
- Search & chat — wide tables in answers keep a visible scrollbar (#3617 — @shekharkadyan).
- Agents — pagination and provider-specific tool arguments are fixed, and interrupted streams retry (#4396, #4418 — @vaibh14yadav-tech).
- Agents — a provider refusal is not returned as the
max_turnsanswer, the answer-only turn asks for no tool calls, current GPT models get a context window, and context shapers keep their headroom on large windows (#4372, #4379, #4380, #4381). - Agents — card answers with no card in the history are an ordinary message (#4622 — @abhishekgml1991);
HIGH_ACCURACY_MODEno longer turns onKEYWORD_SEARCH_QUERIES(#4155 — @abhishek-pipeshub). - Agents — agents refuse to save text as a Word, Excel, PowerPoint or PDF file (#4202 — @shekharkadyan); a reconnect goes to Your actions (#4231 — @shekharkadyan); web search stays on when the tool list is narrowed (#4333 — @abhishekgml1991).
- Agents — tools sent to OpenAI-family models carry
strict: false(#4193 — @tushar1245); a toolset’s tools are listed whatever kind of callable they are (#4523 — @vishwjeet-pawar03); Sheetsclear_valuesis tagged as a write (#4267 — @shekharkadyan). - Agents —
run_codecan read files uploaded to the chat, files from earlier turns stay readable, and failedrun_codesteps show as failed (#4585, #4590, #4660). - Agents — agents with Docs and Sheets save, files a service-account agent makes in a chat belong to the person chatting, and named-entity tools that are switched off are not called (#4660, #4433, #4568).
- Agents — the Evernote toolset works against its datasource (#3615 — @abhishekgml1991); a personal action’s token refreshes at its provider’s token URL (#4773 — @vishwjeet-pawar03); the palette search in the agent builder filters every section (#4603 — @vishwjeet-pawar03).
- Agents — the exact calculator reduces trig angles by quarter turns (#4137 — @abhishek-pipeshub).
- Models — GPT-6 models can be added without the Reasoning box and call tools when added that way, and Bedrock omits temperature for them (#4164, #4191, #4153); editing an Azure OpenAI entry moves the deployment with the model (#4646 — @vansh0211); an empty API key is a 400 naming the field (#4881 — @tushar1245).
- Models — SVG and other unsupported images are converted before they are sent to an LLM (#4174 — @shrikantNemiwal1).
- MCP —
x-request-idis logged on successful/mcprequests, text in angle brackets is accepted in a question, and a 401 names the protected-resource metadata (#3018, #4111, #4711). - Connectors — interrupted full syncs resume, cleanup waits until the sync completes, existing access is kept when permission reads fail, and missing scheduled sync jobs are restored (#4081, #4112, #4119, #4485, #3732). See the highlight.
- Connectors — Zammad, BookStack, Jira Data Center, Jira Cloud and Confluence keep stored access when users, groups or roles cannot be read in full (#4131, #4132, #4133, #4134, #4135, #4139, #4128, #4163, #4178 — @shekharkadyan).
- Connectors — connectors are built from their stored type and keep writes in their own organization and connector (#4734 — @abhishekgml1991); each entities processor closes its Redis producer (#4774 — @R0gue-one); the full-sync lock release retries when it collides with a sync (#4415 — @shekharkadyan).
- Connectors — an OAuth app is linked when the full settings save carries client credentials, the saved password is kept when testing an edited connector, and the firewall IP card shows under the credentials heading (#4108, #4161, #4087, #4850).
- Connectors — pull request diffs are fenced as code (#4742 — @shekharkadyan); links and projects keep their group when read back (#4641 — @shekharkadyan); full-sync fixes for the folder filter (#4101 — @R0gue-one).
- Jira connector — issue-security levels decide who can see an issue (#4738, #4383); related issues in live ticket context are named only to viewers who can read them (#4797 — @abhishek-pipeshub).
- Jira connector — Jira’s own status name shows beside the normalized one, text rendered as “Unknown macro” is indexed on Cloud and Data Center, and the audit fixes cover sync, deletion, content, access and base URL (#4110, #4385, #4400, #4498).
- Confluence connector — notices, rate limits, access sync and comments in pages for Confluence Cloud; converted HTML pages open at their link (#4553, #4572).
- SharePoint and OneDrive connectors — sharing and inherited access are correct (#4350, #4772); access, deletion and failure-safety fixes; Graph calls retry with a fresh request (#4507, #4529).
- Google Drive connector — audit fixes, integration tests and connector bug fixes; an individual grant no longer pulls a shared-drive item out of its drive; a full resync keeps Google Docs shared since the last sync; selected folders that no synced user can find are reported (#4506, #4141, #4412, #4688, #4605).
- Gmail connector — audit fixes, and attachments download from nested parts (#4505, #4184).
- Slack connector — the workspace connector audit moves Slack calls off the event loop, retries 429s and keeps group members (#4768 — @siddhant-pipeshub); a channel or thread is not marked synced when a later page failed (#4078 — @shekharkadyan).
- Slack connector — a thread reply is found by its link, a thread can be read from any Slack record, records say when messages have replies, and the “Sync Messages From” help text explains the 30-day default (#4073, #4402, #4438, #4071 — @shekharkadyan).
- GitHub and GitLab connectors — better rate-limit handling and reliable sync of large repositories (#4138, #4627, #4740, #4757 — @shekharkadyan); GitHub Teams and GitLab get robust sync, removal and access with end-to-end suites (#4499, #4579 — @darshangodase).
- GitHub connector — each repository is looked up once, the model sees whether a pull request was merged and by whom, a huge pull request’s diff is capped so it still indexes, and the personal connector requests
read:user(#4074, #4077, #4710, #4294). - Linear connector — access rules match Linear’s, the API key stays on Linear, a multi-team project is filed under its lead team, late comments re-index, and a non-object issue filter is refused (#4540, #4712, #4641, #4638, #4594).
- Notion connector — production fixes (#4552 — @shrikant-pipeshub).
- Outlook connector — reliable folder, delta and deletion sync (#4546 — @shrikant-pipeshub).
- Connectors — a synced person’s job title is kept in the graph (#4640 — @abhishek-pipeshub).
- ServiceNow connector — each department, location and company stays one group across syncs (#4126 — @shekharkadyan).
- Zammad connector — held tickets are listed at most once a day before Zammad 6.5 (#4262 — @shekharkadyan).
- Drupal Wiki connector — access, full-sync safety, error isolation and error reasons (#4335 — @darshangodase).
- Object storage connectors — S3, MinIO, Azure Blob and Azure Files audit fixes, and a team Azure connector with nothing selected syncs every container or share (#4407, #4508, #4580, #4393, #4493, #4394, #4497, #4700 — @siddhant-pipeshub).
- Nextcloud connector — no data loss on unreadable folders, full activity paging and failure notifications; a password rejected mid-sync is reported as such (#4509, #4744).
- RSS connector — audit fixes and manual indexing (#4500 — @siddhant-pipeshub).
- Network share connector — one unreadable folder no longer stops deletions on the whole share (#4659 — @R0gue-one).
- Web connector — presigned uploads stay signed (#3726 — @jatingaur18); the fetcher’s own redirect-loop refusal is logged as a skip (#4888 — @tushar1245).
- Knowledge base — team grants no longer make members owners, and a knowledge base rejects pushes and changes while it is being deleted (#4626, #4887 — @abhishekgml1991).
- Knowledge base — sharing without
teamIdsoruserIdsno longer answers 500, listings page in a stable order, a restored file is re-embedded from its stored content, and a deleted record removes only its own entity points (#4072, #4104, #4449, #4211). - Knowledge base — a knowledge-hub page keeps its cursor, a limited connection’s root pages over what its limit shares, listing rows carry the indexing status reason, and a global name search matches names first (#4401, #4519, #4501, #4431).
- Knowledge base — nested folder creation works and fails loudly (#3250 — @Saneajayy); a deleted collection is removed from every agent that uses it (#4830 — @tushar1245); the grid view matches the list (#4601 — @vishwjeet-pawar03).
- Knowledge base — a file named alone hides its folder on Neo4j (#4631 — @shekharkadyan); a stored page’s access rule is read back (#4745 — @shekharkadyan); a team grant’s role is checked by what it is worth (#4654 — @shekharkadyan); knowledge-base restore retries on ArangoDB (#4457 — @shrikant-pipeshub).
- Indexing — the handler generator closes outside the processing timeout, consuming stops when the worker event loop dies, and event-loop stalls no longer fail records (#3117, #3310, #4376).
- Indexing — a quoted base64 fragment is not an embedded image, anchor text is embedded instead of link targets, one unit per matching list, and a document’s languages are its natural languages (#4091, #4092, #4093, #4095 — @abhishek-pipeshub).
- Indexing — nested HTML tables and oversized table text are bounded, a table’s caption stays in its header, and a table’s rows and summary are embedded under the heading above it (#4114, #4330, #4434).
- Indexing — the leader lease is renewed only while held, and cluster-wide leases are sized for every worker process (#4206, #4216 — @abhishek-pipeshub).
- Indexing — a few very large records no longer freeze index-pool growth, PDFs get a 90-minute budget, and a rate-limited record behind its connector’s backlog is not failed (#4195, #4370, #4716).
- Indexing — image payloads left in text are replaced, gradient-filled Excel cells are read, and SVGs whose colors use CSS
var()are indexed (#4726, #4733, #4829). - Indexing — a stage’s summary point is written under the record’s virtual record, a re-index that restores classification keeps the summary in search, and record properties are written on the real indexing path (#4447, #4643, #4655).
- Indexing — an in-progress record whose delivery ran out of attempts is failed, admins are not told to re-upload connector items, and concurrent duplicate copies no longer deadlock on shared taxonomy nodes (#4694, #4709, #4834).
- Indexing — an empty status-filtered folder walk on Neo4j is not an error, and a rebuild removes the entity points it wrote for a connector deleted meanwhile (#4839, #4842).
- Indexing — slide citation boxes are the right way up after Docling 2.133 (#4405 — @shekharkadyan); uploaded images are stored as uploaded (#4595 — @tushar1245).
- Knowledge graph — the entity store loads its models at startup, an empty entity collection is recreated for the configured embedding model, and a lookup that could not run never mints an entity (#4100, #4207, #4240).
- Knowledge graph — a record that exists but is not indexed yet says so (#4109 — @shekharkadyan); no taxonomy node without a key is linked (#4103 — @abhishek-pipeshub).
- Storage & data layer — every edge goes when one ArangoDB connector record is deleted, a connector’s pipeline stage states go with it, and per-record graph query fan-outs are capped (#4188, #4448, #4770).
- Storage & data layer — ArangoDB’s organization user list carries
_keyand_idlike Neo4j’s, and Neo4j property existence constraints are skipped on Community Edition (#4841, #4886). - Storage & data layer — the internal buffer route sends raw bytes, so files over 140 MB stop crashing Node, and an artifact set is served only for the revision the stored record holds (#4398, #4620).
- Storage & data layer — each retention tick is bounded, and a delete is fenced against a writer that re-files the revision (#4759 — @abhishekgml1991).
- Storage & data layer — the cached BM25 model loads without the network (#4310 — @shekharkadyan).
- API — 503 instead of “not found” when the database cannot be read, utf-8 on SSE responses, names and queries with
%are accepted, and an HTML refusal names the field (#4205, #4366, #4789, #4076). - API — the record response leaves out internal bookkeeping, and
contentRev,hasIndexedCopyandqualified_nameare documented (#4483, #4445, #4321, #4404 — @shekharkadyan). - API — OAuth: 14 operations work with the scopes the spec lists, unset parameters are left out of the authorize URL, token-request validation failures use the OAuth error format, GitHub’s token response is read, and the consent page scrolls (#4220, #4446, #4353, #4602, #4696).
- API — connected clients are kept when an app’s knowledge limit widens (#4702 — @siddhant-pipeshub).
- SDKs — the connector setup routes ship in the SDKs and are described as the server answers them, Speakeasy no longer drops 11 operations, and SSE event data is typed as a JSON string again (#4230, #4176, #4136, #4417 — @siddhant-pipeshub).
- Auth — the first admin is signed in after sign-up (#4183 — @shekharkadyan); a reset link for a deleted account says it is no longer valid (#4873 — @tushar1245); users without a password can set one (#4802 — @Pranjal-wq).
- Auth — timezone-aware UTC in
is_jwt_expired, the Google logo in the Google sign-in settings, and an import cycle in JIT provisioning (#4423, #4361, #4314). - Admin & settings — SMTP settings are checked with the server before saving, and a failure names the login or the server (#4884, #4624).
- Admin & settings — service-account row actions sit in the More options menu, Bots waits for the user’s role, and unknown workspace URLs show the not-found page (#4652, #4901, #4780).
- UI — pages no longer crash on phones, iOS no longer zooms into the chat box, and phone layout follow-ups land (#4224, #4600, #4589, #4612, #4260).
- UI — each MCP server’s own logo in chat and on the canvas, Google Docs and Sheets logos for their toolsets, and a YAML icon for
.yamlfiles (#4604, #4611, #4596, #4931). - UI — the agent creator chip sits next to Share, long names are trimmed in the Collections chat widget, the language panel no longer crashes the sidebar, and every PDF preview loads after the pdf.js 4 upgrade (#4597, #4510, #4892, #4337).
- UI — release polish (garbled text, a hidden dead action, avatar upload errors, untranslated strings), Projects QA fixes, and Slack bot agent picker, share notification and archive fixes (#4792, #4785, #4766).
- Desktop app — desktop sockets end for removed, disabled or logged-out users (#4384 — @R0gue-one).
- Deployment — the Helm local preset’s app runs as uid 1000, the Google Docs toolset ships in the image, and shared modules load in the right order at startup (#4121, #4513, #4520).
- Deployment — the Node API drains HTTP requests before closing Mongo and Redis on shutdown, and the Neo4j health probe uses the pooled driver (#4115, #4069).
- Deployment — search and toolset routers load lazily to break an import loop (#4397 — @shekharkadyan); the code sandbox reports an unreachable Docker daemon instead of blaming the image (#4367 — @abhishekgml1991); the PDF rasterizer and local embeddings are sized from the container’s CPUs (#4687 — @abhishekgml1991).
- Windows — startup paths no longer depend on Unix-only
os.getuidandSIGBUS(#4245, #4933). - Observability — API requests are access-logged whatever the path’s letter case and when a mounted router answers; a 4xx logs at warn without a stack; a 402 refusal logs one warning (#4356, #4514, #4885, #4872).
- Observability — the config key stays out of cache-miss and fallback debug lines (#4689 — @abhishekgml1991).
- Storage & data layer — the vetted-function catalog ends a SQL line comment at a carriage return (#4883 — @abhishekgml1991).
- Search & chat — removing the last recipient of a saved search clears its share link (#4919 — @abhishekgml1991).
- Search & chat — the pattern-match storage audit fixes paths, moves, shared content and search confinement (#4177 — @vishwjeet-pawar03).
Security fixes
- Auth — SAML and generic OAuth sign-in are removed, and
client_credentialsapps act as a named service account (#4217, #4517, #4538 — @shekharkadyan). See the highlight. - Auth — granular connected-app consent, atomic refresh-token rotation, single-use authorization codes, device-token revocation and server-side session termination on logout (#4451, #4777, #4776, #4647, #4790). See the highlight.
- Auth — SAML tokens are handed over with a one-time PKCE code, the email lookup is bound to its token, and operator-shaped query names are refused (#4173, #4347).
- Search & chat — organization and connected-app isolation across search, chat, storage, jobs and tools; parents, related records and source paths outside a connected app’s knowledge limit are no longer named (#4492, #4703, #4475, #4522, #4526).
- Search & chat — a shared chat hides, from each recipient, the citations, attachments, reference data, applied filters and search hits of records that recipient cannot read. The answer text, reasoning, follow-up questions and tool results are still shown as the owner saw them, so they can carry content from such records: share a chat only with people who may read what it draws on (#4667 — @abhishek-pipeshub).
- Search & chat — semantic search requires the
semantic:readscope, client-supplied history is refused on conversation create, and vector point deletes are scoped to the caller’s organization (#4085, #4560, #4695). - Search & chat — teams are returned only to callers in their organization, OAuth apps issue tokens only for their own workspace, and the web fetcher refuses an unsafe address before the headless browser opens it (#4179 — @vishwjeet-pawar03).
- Agents — model-written SQL runs read-only unless approved (#4668 — @abhishek-pipeshub).
- Agents — a failed OAuth app save no longer stores the client secret on the instance (#4413 — @vishwjeet-pawar03).
- Observability — credentials, OAuth and session tokens, prompts and history are redacted from logs (#4051, #4346, #3597, #3596); redaction is linear-time and logged URLs are capped (#4345 — @abhishekgml1991).
- API — hardened request validation, remote images, previews, connector addresses and SVG uploads (#4625, #4673, #4788); the Node API moves to zod 4 with bounded request validation (#4674 — @abhishekgml1991).
- Dependencies — vulnerable Python, Node and frontend dependencies are updated, python-jose is replaced with PyJWT, and CI blocks newly introduced high or critical vulnerable dependencies (#4265, #4669).
- Dependencies — security updates: the MCP SDK, proxy-addr, follow-redirects, hono and markdown-it; uuid 11.1.1; Pillow 12.3 and then 13; undici, body-parser, fast-uri, multer and ip-address; dompurify 3.4.17; pyarrow 23.0.1 (#4264, #4436, #4437, #4338, #4312, #4672, #4670, #4671, #4304).
Performance & reliability
- Indexing — token-based OpenAI/Azure embedding batches, query priority over indexing in the bundled embedding server, lower per-turn CPU, cacheable enrichment prompts and faster steady-state startup (#4197, #4196, #4290, #4233, #4298).
- Indexing — orphaned parser workers are prevented, worker heaps are released, Docling keeps less memory, image-heavy processing is bounded, parse workers can be killed, and repeatedly crashing records are terminated without charging queued work (#4666, #4787, #4800, #4874, #4832, #4928).
- Storage & data layer — very large records, concurrent content replacement and local mount initialization are handled; AWS SDK v3; atomic graph writes, transaction error reporting, graph cleanup, Neo4j pooling and Redis timeout handling (#4488, #4679, #4869, #4463, #4484, #4542, #4235, #4502, #4870).
- Storage & data layer — the neo4j driver is pinned to 6.4.1, past the pool-acquisition spin (#4617 — @abhishekgml1991); the Kafka consumer’s settled-offset record is bounded so lookups stay O(1) (#4920 — @abhishekgml1991).
- Search & chat — a search’s citations are saved in one insert (#4080 — @shekharkadyan), a user’s permissions are walked once per timeline (#4743 — @shekharkadyan), and the virtual-record mapping is looked up by its key (#4328 — @abhishek-pipeshub).
- Agents — the skill write surface stays out of the turn-0 prompt (#4117 — @abhishek-pipeshub).
- Indexing — dateparser no longer rebuilds its caches per record, and a timeout no longer steps the model down (#4232 — @abhishek-pipeshub).
Deprecations & removals
- Auth — SAML and generic OAuth sign-in are removed (#4217 — @shekharkadyan). See the upgrade notes.
- API —
POST /connectors/:connectorId/filtersis deprecated in favor ofPUT /connectors/:connectorId/config/filters-sync(#4263 — @shekharkadyan). - API — five unused connector-service record routes are removed, and
DEFER_EXTRACTIONis gone (#4255, #3270). See the upgrade notes. - UI — the deep-research control is removed from the chat composer; API clients that send
deepSearchstill get it (#4615 — @tushar1245). - Agents — the Google Meet, Slides and Forms toolsets, which never loaded, are removed (#4223 — @shekharkadyan).
- Admin & settings — the Labs “Container Permission Filter” switch, which no longer did anything, is removed (#4309 — @shekharkadyan).
Documentation
- Docs — release notes for 0.8.0, 0.9.0, 0.9.1 and 0.10.0, grouped by kind of change (#4099, #4241, #4831, #4855, #4877).
- Docs — an agent-first connector guide, checklist and add-connector skill; the cases a non-tree source already has answers for (#4244, #4432).
- Docs — slimmer agent instructions, with the review rubric moved into a skill (#4149 — @abhishek-pipeshub).
- Docs — the API docs name the tool-rules route rules, describe
retrieveand its 404, and say answer confidence is on by default; thestart_blocksingle-record limit is named (#4375, #4760, #4082, #4368). - Docs — the Czech README points to PipesHub Cloud signup (#4559 — @RahulSinghai606).
Developer experience & infrastructure
- CI — Ruff and ESLint fail only on findings a pull request adds, the baseline check keeps uncommitted edits, and ESLint parses tests (#4150, #4156, #4158, #4810, #4833).
- CI — the TypeScript, Python and Go SDKs are tested against each change, and the OpenAPI validation job is fixed (#4107, #4450 — @siddhant-pipeshub).
- CI — one release job opens the changelog PRs here and in the docs (#4252, #4489 — @siddhant-pipeshub).
- CI — the Python unit suite runs as parallel shards, the Google Drive suites get their own shard, Zendesk gets integration-test wiring and a manual dispatch, and a failed Zendesk token mint fails only its tests (#4478, #4268, #4259, #4334, #4851).
- CI — runners log in to Docker Hub with a read-only token, free disk before installing, and survive running out of memory; the Node coverage gate is narrowed to the shipped code (#4027, #4539, #4657, #4307 — @shekharkadyan).
- CI — weekly, then monthly, grouped Dependabot updates, with holds on packages that need code changes (#4266, #4903, #4854).
- CI — the nightly SDK, Playwright, Notion, Drive, GitHub, GCS, Outlook and Zendesk failures are repaired (#4661, #4924, #4578 — @siddhant-pipeshub).
- Tests — connector simulator coverage, storage tests across local disk, S3 and Azure, and TypeScript, Python and Go SDK operation coverage (#4360, #4567, #4584, #4708, #4427, #4880).
- Tests — integration tests stop flaking on their own timing, retry and shared-state bugs, and 139 Python unit failures on
mainare fixed (#4228, #4336). - Tests — new unit tests for image hashing, decorative images, unreadable files, folder trash, render budgets and URL redaction (#4544, #4098, #4142, #4302, #4469, #4665).
- Tests — connector suites: Jira, Drive, GitHub, GitHub Teams, Confluence, Linear, Salesforce, Zendesk and Gmail (#4159, #4160, #4213, #4234, #4351, #4419, #4527, #4528, #4569, #4577, #4635, #4639, #4685, #4686, #4843, #4837, #4503).
- Tests — the OpenAPI spec matches the running Node API, SSE envelopes are checked as written, and every
/mcptool is called with aclient_credentialstoken (#4170, #4421, #4364, #4414, #4648, #4730). - Tests — integration and e2e follow-ups for behaviour changes, model names, sign-in removal, OAuth scopes, service accounts and the shared admin (#4061, #4120, #4162, #4182, #4306, #4320, #4399, #4444, #4472, #4473, #4548, #4549, #4616, #4630, #4664, #4736, #4879).
- Tests — core, graph, agent-loop, storage, messaging and named-entity tests are pinned or made deterministic (#4052, #4097, #4165, #4168, #4185, #4198, #4242, #4322, #4323, #4348, #4403, #4420, #4426, #4439, #4459, #4460, #4504, #4521, #4524, #4547, #4550, #4555, #4581, #4582, #4607, #4619, #4690, #4731, #4735, #4737, #4765, #4782, #4795, #4799, #4838, #4840, #4867, #4876, #4918, #4923).
- Tests — the stage-runtime graph tests run in CI, and unused
url_fetcherwrappers are dropped (#4468 — @abhishekgml1991). - Developer experience — the MCP pages take their feature notices from config, and record content is read through one reader (#4362, #4511).
- Dependencies — Python, frontend and integration-test minor and patch updates; python-gitlab 8, notion-client 3, dotenv 18, redis-py 8, aiobotocore 3.10, Mongoose 9, next 15.5.28, tiptap 3, pdf.js 4, docling 2.133, transformers 5.18, torch 2.13 and protobuf 6 (#4692, #4699, #4714, #4761, #4878, #4882, #4889, #4697, #4339, #4319, #4340, #4868, #4835, #4804, #4836).
- Dependencies — Dependabot updates (#4127, #4272, #4273, #4275, #4278, #4280, #4281, #4284, #4285, #4286, #4288, #4289, #4377, #4378, #4409, #4411, #4440, #4471, #4490, #4525, #4563, #4565, #4571, #4573, #4588, #4593, #4637, #4642, #4656, #4658, #4680, #4682, #4698, #4717, #4719, #4722, #4724, #4728, #4729, #4811, #4812, #4817, #4818, #4823, #4824, #4825, #4845, #4846, #4847, #4856, #4857, #4858, #4860, #4861, #4865, #4893, #4895).
Contributors
Thank you to the 30 people who contributed to this release: @shekharkadyan, @abhishekgml1991, @abhishek-pipeshub, @tushar1245, @vishwjeet-pawar03, @siddhant-pipeshub, @Pranjal-wq, @R0gue-one, @shrikant-pipeshub, @darshangodase, @harshit-pipeshub, @rish231294, @Saneajayy, @shrikantNemiwal1, @ajeya-krishna, @anupPradhan0, @darshan-pipeshub, @vaibh14yadav-tech, @aBiR1D, @Harsh777-code, @hossainzarif23, @jatingaur18, @RahulSinghai606, @ShaoLOWu, @ShryukGrandhi, @SumiRann1, @tianxingjian2406, @uncleSlayer, @vansh0211, @yugal072.New contributors
- @ShaoLOWu made their first contribution in #4250
- @vaibh14yadav-tech made their first contribution in #4396
- @harshit-pipeshub made their first contribution in #4358
- @ShryukGrandhi made their first contribution in #4469
- @Harsh777-code made their first contribution in #4302
- @SumiRann1 made their first contribution in #4142
- @tianxingjian2406 made their first contribution in #4544
- @RahulSinghai606 made their first contribution in #4559
- @yugal072 made their first contribution in #4098
- @hossainzarif23 made their first contribution in #4665
- @ajeya-krishna made their first contribution in #4749
Full commit-level detail: GitHub release · Compare view All releases · Older: 0.10.0 →