<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Graham Hudgins - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Graham Hudgins - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/search-labs/author/graham-hudgins</link>
    </image>
    <link>https://www.elastic.co/search-labs/author/graham-hudgins</link>
    <atom:link href="https://www.elastic.co/search-labs/rss/author/graham-hudgins.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[en]]></language>
    <lastBuildDate>Sat, 24 Oct 2026 11:15:03 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Your AI chat is not a screenshot: Live shared conversations in Elastic Agent Builder]]></title>
    <description><![CDATA[Whoever picks up the problem next reads the whole thread and carries on with the same agent, with no access to anything beyond that one conversation.]]></description>
    <content:encoded><![CDATA[<p>You can now share an Elastic Agent Builder conversation with named teammates or open it to everyone who can use its agent. Agent Builder conversation sharing is live rather than a read-only copy. The person you share with reads the full history and keeps questioning the same agent inside the original thread. Their access comes from Kibana privileges they already hold, and it reaches that one conversation only.</p><p>Multi-user conversations are generally available (GA)now on Elastic Cloud Serverless, and they arrive for Elastic Cloud Hosted (ECH) and Elastic Self-Managed in upcoming version 9.6. If you’re new to Agent Builder, get started with <a href="https://www.elastic.co/search-labs/blog/elastic-ai-agent-builder-context-engineering-introduction">Introducing Elastic Agent Builder</a> and the <a href="https://www.elastic.co/search-labs/blog/agent-builder-elastic-ga">GA announcement</a>.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9987aca26c1f1006/6acc72f91e82a69318124cc0/image4.png" alt="Shared Agent Builder session in Kibana with two participants and the Include agent control for team notes" /><h2>Why share an Agent Builder conversation instead of a summary</h2><p>A conversation with an agent accumulates context over time. By the tenth round, you’re finally asking the question that you had in mind all along.  Now owners can share conversations without preparing a summary or copying context. For example, consider a hospital shift change. The chart belongs to the patient and stays at the bedside, so the clinician who walks in at 7 a.m. reads the same history as the one who had been there earlier. No one copies the chart into a personal notebook and carries it home. We wanted conversations to work the same way. The thread belongs to the problem, and whoever picks up the problem next reads the same thread, resulting in a zero effort handoff.</p><p>On top of that, it’s a live handoff. Most AI chat products publish a conversation as a read-only snapshot behind a link, which is a copy that’s frozen at the moment you shared it. A shared conversation stays live. The recipient continues the same thread against the same <a href="https://www.elastic.co/search-labs/blog/agent-builder-elastic-ga">custom or built-in agent</a>, and the agent still has the history. Access comes from the Kibana privileges that the recipient already had, not from possession of a secret URL.</p><h2>How SRE teams use AI for incident response in a shared conversation</h2><p>Incident response is a compelling use case for live, shared conversations. Here are two ways that site reliability engineering (SRE) teams can put them to work.</p><h3>How to hand off an incident at shift change</h3><p>A Service Level Objective (SLO) burn rate alert pages the on-call SRE at 3 a.m. They open a conversation with an agent that has access to their application performance monitoring (APM) traces and log data streams. Over six rounds, they try to solve the problem. Then the SRE’s shift ends.</p><p>Instead of pasting a summary into the incident channel, they add the incoming on-call SRE as a member of the conversation and hand over the thread itself. The incoming SRE reads what has already been checked and then asks the next question; the agent still has the service name and the time window in context.</p><h3>How several engineers work one incident in the same thread</h3><p>Three engineers split the work:</p><ul><li><p>One person chases a deploy correlation</p></li><li><p>Another looks at node-level memory pressure</p></li><li><p>Still a third checks whether an upstream dependency's latency moved</p></li></ul><p>Making the conversation public puts all three in the same thread against the same agent, and because every round shows its author, nobody reruns a query that a colleague ran two minutes ago. The thread becomes the shared scratch pad that an incident channel tries to be, except this one can query the data.</p><h2>How Agent Builder conversation sharing and access control work</h2><p>Every conversation is in one of two access modes, and the owner (the user who created it) chooses which:</p><ul><li><p><strong>Restricted</strong> is the default and covers both the unshared case and the selectively shared one. Only the owner and the users listed as members can read the conversation or continue it. A new conversation is private with no members.</p></li><li><p><strong>Public</strong> makes the conversation readable and continuable by any user who can access the conversation's agent. Public conversations also show up in those users' conversation lists, so they’re discoverable rather than reachable only by someone pasting a URL. A public conversation cannot have a member list, because everyone who can use the agent already has access.</p></li></ul><p>A conversation belongs to the Kibana space where it was created, and sharing doesn’t change that. Making a conversation public doesn’t make it visible from another space.</p><p>In addition, sharing a conversation grants access only to that one conversation. It doesn’t grant any privilege that the user didn’t already have. Agent access is checked every time that a conversation is read, and it even applies to the owner. If anyone loses access to a conversation's agent or if the agent is deleted, the conversation stops being readable for them and drops out of their conversation list. </p><p>Members of a restricted conversation can read its full history and continue it by sending messages. The owner retains control over the conversation and its sharing settings.</p><p><strong>Action</strong></p><p><strong>Owner</strong></p><p><strong>Member</strong></p><p><strong>Other users</strong></p><p>Read and continue</p><p>Yes</p><p>Yes</p><p>Only if the conversation is public</p><p>Rename</p><p>Yes</p><p>No</p><p>No</p><p>Delete</p><p>Yes</p><p>No</p><p>No</p><p>Change sharing</p><p>Yes</p><p>No</p><p>No</p><h2>How to share an Agent Builder conversation</h2><h3>How to share a conversation in the Kibana UI</h3><p>To share a saved conversation, select the invite control in its header. From the sharing panel, the owner can choose an access mode and review current members. They can also find people to add. Only the owner can access the sharing controls. Members can view the participant list but cannot change access.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt14f875d1774a842d/6acc735d43475fd5b42f31d5/image3.png" alt="Agent Builder conversation sharing panel showing Restricted access and the current member list in Kibana" /><h3>Who sent what, and how to leave a note for the team</h3><p>Each message identifies its sender with the name and avatar of the person who sent it. Agent responses are labeled with the agent's identity, which keeps a thread legible when multiple people and an agent have all contributed. In addition, when authoring a chat message, you can ask for an agent response or just leave a note for the team.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbe34caa40fde2b48/6acc73911e82a64ae0124cc4/image1.png" alt="Leaving a team note in a shared Agent Builder conversation using the Skip agent option in Kibana" /><h3>How to share a conversation with the Kibana API</h3><p>Sharing from the API is one request. <code>PUT /api/agent_builder/conversations/{conversation_id}/access_control</code> replaces the entire access control for a conversation, so send the state you want rather than a delta.</p><p>To share with two named users:</p>curl -X PUT "${KIBANA_URL}/api/agent_builder/conversations/${CONVERSATION_ID}/access_control" \
     -H "Authorization: ApiKey ${API_KEY}" \
     -H "kbn-xsrf: true" \
     -H "Content-Type: application/json" \
     -d '{
       "access_mode": "private",
       "entries": [
         {"type": "user", "id": "u_A1b2C3d4E5f6", "role": "member"},
         {"type": "user", "id": "u_G7h8I9j0K1l2", "role": "member"}
       ]
     }'<p>The same endpoint covers all three sharing states.</p><p><strong>Goal</strong></p><p><strong><code>access_mode</code></strong></p><p><strong>entries</strong></p><p>Share with named users (<strong>Restricted</strong> in the UI)</p><p><code>private</code></p><p>One <code>{"type": "user", "id": "...", "role": "member"}</code> object per person</p><p>Open to everyone who can use the agent (<strong>Public</strong> in the UI)</p><p><code>public</code></p><p><code>[]</code></p><p>Stop sharing entirely (<strong>Restricted</strong>, no members)</p><p><code>private</code></p><p><code>[]</code></p><p>Read the full specification and API limits in <a href="https://www.elastic.co/docs/api/doc/kibana/operation/operation-put-agent-builder-conversations-conversation-id-access-control">the documentation</a>.</p><h2>Getting started with Agent Builder conversation sharing</h2><p>If you’re on Elastic Cloud Serverless, open any conversation you own in Agent Builder and look for the invite control in the header. On Elastic Stack, this arrives in 9.6. <a href="https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/permissions#conversation-access-control">Conversation access control</a> covers the access modes and how sharing composes with Kibana and Elasticsearch privileges, and the <a href="https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/kibana-api">Kibana API reference</a> has the request shapes. If you haven’t used Agent Builder yet, <a href="https://cloud.elastic.co/registration">start a free trial</a> and work through <a href="https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/get-started">Get started with Agent Builder</a> first.</p><p>Tell us what you want next from shared conversations.</p><p><em>The release and timing of any features or functionality described in this post remain at Elastic's sole discretion. Any features or functionality not currently available may not be delivered on time or at all.</em></p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/agent-builder-conversation-sharing</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/agent-builder-conversation-sharing</guid>
    <category><![CDATA[Agentic AI]]></category>
    <category><![CDATA[Kibana]]></category>
    <dc:creator><![CDATA[Graham Hudgins,Bruno Farache]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt8e71a15ecd624252/6acc728235b26d5cf89a779e/image2.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Failure store: see what didn’t make it]]></title>
    <description><![CDATA[Learn about failure store, a new feature in the Elastic Stack that captures and indexes previously lost events. ]]></description>
    <content:encoded><![CDATA[<p>If a tree falls in the woods and no one is around, does it make a sound? Yes, it does. Just like if a log message is emitted but fails to process into your observability platform, <strong>that log message really did happen</strong>—and, assuming it’s something important, you’ll almost certainly hear about it eventually.</p><p>Elastic is built to adapt to all kinds of data your systems emit: logs, metrics, traces, custom telemetry, and more. But when that data doesn’t match the expected shape due to a schema change, a misconfigured agent, or a rogue service emitting unexpected fields, it can fail to process and silently disappear.</p><p>That absence is a signal. But it’s also hard to detect, hard to debug, and hard to report on. And worse, it puts the burden on the client to figure out what happened.</p><p>That’s why we built <strong>failure store</strong>: a new way to capture, debug, and analyze failed events directly in the Elastic Stack. In this blog, we’ll go over Elastic’s failure store and explain how it provides visibility into data ingestion issues, helps debug schema changes, and enables teams to monitor data quality and pinpoint failure patterns.</p><h2>About failure store</h2><p><em>Failure store</em> gives you visibility into failed events that were previously only visible to the client sending the data and to dead letter queues. It works by capturing and indexing failed documents into dedicated `::failures` indices that live in your data stream alongside your production data. You can enable it per data stream or across multiple data streams with a single cluster setting.</p><h2>Why it matters</h2><p>Teams are often downstream from the source of truth. They don’t write the code; they just keep it all running. When upstream teams ship changes that break mappings or introduce unexpected fields, failures happen. But without access to the original failed data itself, debugging becomes guesswork.</p><p>Even worse, when data fails to be indexed, it doesn’t exist in your indexes—which means it’s much harder to measure the impact. You can’t track which streams are failing most often. You can’t quantify how broken your pipelines are. And you certainly can’t alert on what’s missing if the platform never saw it (except for alerts when data goes missing).</p><p>The failure store allows a developer to understand which data failed indexing and why, giving observability engineers the tools needed to quickly understand and fix ingestion failures. Triage also happens quickly since failures are stored in Elasticsearch, with no need to gather information from remote clients or shippers.</p><h2>Get started</h2><p><strong>Set up for new data streams…</strong></p>PUT _index_template/my-index-template
{
  "index_patterns": ["my-datastream-*"],
  "data_stream": { },
  "template": {
    "data_stream_options": {
      "failure_store": { // ✨
        "enabled": true 
      } 
    }
  }
}<p><strong>…or enable for existing data streams</strong></p><p>Enable failure store for individual data streams in stack management in Kibana or leverage the _data_stream API:</p>PUT _data_stream/my-existing-datastream/_options
{
  "failure_store": {
    "enabled": true
  }
}<p><strong>Enable failure store via cluster setting</strong></p><p>If you have a large number of existing data streams, you may want to enable their failure stores in one place. Instead of updating each of their options individually, set data_streams.failure_store.enabled to a list of index patterns in the cluster settings. Any data streams that match one of these patterns will operate with their failure store enabled.</p>PUT _cluster/settings
{
  "persistent" : {
    "data_streams.failure_store.enabled" : [ "my-datastream-*", "logs-*" ]
  }
}<p><strong>A failing document response</strong></p><p>After enabling the failure store, requests that previously would fail are now processed differently. The client now receives a <code>201 created</code> instead of a <code>400 Bad Request</code>. Especially if you’re using custom applications or our <a href="https://www.elastic.co/docs/reference/elasticsearch-clients">language clients</a>, make sure to update your code accordingly. When a document goes to the failure store, the response will contain the <code>failure_store: used</code> attribute.</p>{
  "_index": ".fs-logs-generic.otel-default-2025.07.31-000010",
  "_id": "2K9IYpgBfukt97YIaUPG",
  "_version": 1,
  "result": "created",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "_seq_no": 0,
  "_primary_term": 1,
  "failure_store": "used"
}<p><strong>Search and filter failure data</strong> just like any other logs, with support for ES|QL and Kibana tools:</p>  FROM logs-generic.otel-default::failures<p>Data in the failure store comes with all the context to make debugging simple. Each ::failures index contains information about which pipeline failed, along with specific error messages, stack traces, and error types that help you identify patterns.</p><p>Are you getting lots of errors and aren't sure where to start? Use ES|QL and ML functions. With the data exposed in ES|QL, errors can be analyzed with ML capabilities such as <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/grouping-functions#esql-categorize">CATEGORIZE</a> to help parse errors and extract patterns. Read more about data remediation techniques in our <a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/failure-store-recipes#failure-store-examples-remediation">documentation</a>.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta20404a812af7309/6a170deda929cf3114ae0a5d/9a7c92485859ee13e971466c074bd001dbad12ba-1506x596.png" alt="Elastic failure store - example of query failures with ES|QL" /><p><strong>Control costs and retention</strong> using the same data stream lifecycle you're already using for your other data. Absent a custom retention, failure store data will stick around for 30 days.</p><p><strong>Monitor data quality over time</strong> with failure metrics and sortable dashboards by failure percentage to find new problem areas that require investigation. Read more about data quality monitoring in the <a href="https://www.elastic.co/docs/solutions/observability/data-set-quality-monitoring">documentation</a>.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltcc5a3f8e6bfc435d/6a170def7d8d67042370e7a4/f6790c267346481ba3b54f203c0f30224215855b-1600x818.png" alt="Elastic failure store - example for data quality and failure summaries" /><h2>Learn more</h2><p>Failure store is available starting in Elastic 9.1 and 8.19 and will be enabled by default on <strong>logs-*-*</strong> indexes in an upcoming release. To learn more, check the <a href="https://www.elastic.co/docs/manage-data/data-store/data-streams/failure-store">documentation</a> for setup instructions and best practices.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elastic-failure-store</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elastic-failure-store</guid>
    <category><![CDATA[Basics]]></category>
    <dc:creator><![CDATA[James Baiera,Graham Hudgins]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9a02efdbda3b403b/6a170df1961e6963e4c4cf8d/9ad9833bbf5e1fd93376b955500d6cbc70e19ec0-1200x628.png" length="0" type="image/png"/>
    <pubDate>Wed, 13 Aug 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>