Skip to content

Feedback - Examples section - #609

Merged
Rachael-Graham merged 5 commits into
mainfrom
feedback7
Oct 15, 2026
Merged

Rachael-Graham merged 5 commits into
mainfrom
feedback7

Conversation

@Rachael-Graham

Copy link
Copy Markdown
Contributor

No description provided.

Signed-off-by: Rachael Graham <rachael.graham@solo.io>
@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Docs preview

Link Points at
Branch preview The newest push to this branch. Updates in place.
Commit preview 4413c32 only. Frozen.

Both are uploaded Worker versions and serve no production traffic.

Signed-off-by: Rachael Graham <rachael.graham@solo.io>
@Rachael-Graham Rachael-Graham changed the title Feedback7 Feedback - Examples section Oct 15, 2026

Underneath, the checkpoint attaches a {{< gloss "Tag" >}}Tag{{< /gloss >}} named `checkpoint-<checkpoint-id>` to the snapshot, and Agent Substrate does not collect a snapshot while a tag names it. You can see the tag by running `kubectl ate get tags --atespace kagent`.

## Forking is temporarily unavailable

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: kagent#3165, which moves suspension to DATA snapshots and makes forking possible, merged to main today. The docs pin 1.0.0-alpha13, which does not contain that commit, so ForkSession still returns FAILED_PRECONDITION on the documented version.

Removing this section also breaks the #forking-is-temporarily-unavailable links in about/substrate-runtime/suspend-and-resume.md:88 and observability/launch-ui.md:103. These places still say that forking is unavailable:

  • about/core-concepts.md:154
  • about/substrate-runtime/suspend-and-resume.md:88
  • observability/launch-ui.md:103
  • the fork_session row at examples/agents-via-mcp.md:516
  • the REVIEW comment at operations/operational-considerations.md:253

Can we either keep these notes until the next kagent release, or update all of those places in this PR? If forking is in scope now, a fork step could replace this section. The same applies to the two removals in agents-via-mcp.md.


2. Keep the checkpoint ID if you need to inspect or delete the checkpoint later.

Forking a checkpoint is temporarily unavailable. The current release stores process memory in suspended Actor snapshots, so `fork_session` returns `FAILED_PRECONDITION` instead of creating a second Session from a checkpoint.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: same as the forking comment on agent-substrate.md. The fork_session row in the MCP tool reference table at line 516 of this page still says that the tool rejects checkpoints, so this page now contradicts itself.


> [!WARNING]
> The open source build does not authenticate this port. Any caller that can reach it can invoke any Agent, so do not expose port `8083` outside the cluster. For what the open source build does guarantee, see [Identity]({{< link path="about/substrate-runtime/identity" >}}).
> A default installation sets `config.server.auth.mode` to `insecure`. In this mode any caller that can reach the port can invoke any Agent. Do not expose port `8083` outside the cluster while the controller runs this way. To take the caller's identity from a claim that a fronting proxy sets instead, set `config.server.auth.mode` to `trusted-proxy` and name the claim in `config.server.auth.userIdClaim`. For the wider identity model, see [Identity]({{< link path="about/substrate-runtime/identity" >}}).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: "while the controller runs this way" implies that trusted-proxy mode makes port 8083 safe to expose. In go/core/internal/httpserver/auth/proxy_authn.go, ProxyAuthenticator decodes the JWT without verifying its signature (its comment says "oauth2-proxy or k8s service account already validated"), and a request that sets X-Agent-Name takes its user ID from X-User-Id. A caller that reaches the port directly can still forge any identity.

The Helm README pairs trusted-proxy with oauth2-proxy.enabled: true. Can the warning say that the port must be reachable only through the authenticating proxy? The same wording is in agents-via-mcp.md:23.


> [!WARNING]
> The open source build does not authenticate this endpoint. Every request is accepted, and the caller's identity is read from an `X-User-Id` header that the caller sets itself, defaulting to `admin@kagent.dev`. Because the endpoint can invoke agents, create checkpoints, and create Sessions, do not expose port `8083` outside the cluster. For the wider identity model and what the open source build does guarantee, see [Identity]({{< link path="about/substrate-runtime/identity" >}}).
> A default installation sets `config.server.auth.mode` to `insecure`. In this mode the endpoint accepts every request and reads the caller's identity from an `X-User-Id` header that the caller sets itself, defaulting to `admin@kagent.dev`. The endpoint can invoke agents, create checkpoints, and create Sessions. Do not expose port `8083` outside the cluster while the controller runs this way. To take the caller's identity from a claim that a fronting proxy sets instead, set `config.server.auth.mode` to `trusted-proxy` and name the claim in `config.server.auth.userIdClaim`. For the wider identity model, see [Identity]({{< link path="about/substrate-runtime/identity" >}}).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should fix: see the trusted-proxy comment on a2a-agents.md:32, which applies here too. Separately, this warning is now six sentences. Consider keeping the alert to the risk and the instruction, and moving the trusted-proxy setup into body text or the Identity page.

### A2A methods

This example calls each method in the following table except the three `TaskPushNotificationConfig` calls, which manage a task's callbacks and which the kagent CLI wraps. The service defines more, including `ListTasks`. `GetTaskPushNotificationConfig` reads a single callback by ID.
The following table covers the methods that this example uses. The kagent CLI wraps the three `TaskPushNotificationConfig` calls, which manage a task's callbacks. For the further methods that `lf.a2a.v1.A2AService` defines, see the [A2A protocol](https://a2a-protocol.org) specification.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should fix: the earlier text said that this example does not call the three TaskPushNotificationConfig methods. Without that, a reader cannot tell whether the table covers them. The link also goes to the a2a-protocol.org homepage. A link to the methods section of the specification would be more useful.

An HTTP request that also sets the `tenant` field must set a value that matches its URL. There is no deployment-wide agent card, because the controller serves many Agents.

A caller addresses the Agent rather than one conversation. The message's `contextId` selects the conversation. Omitting both a `contextId` and a task ID starts a new {{< gloss "Session" >}}Session{{< /gloss >}}, and repeating a `contextId` continues that Session.
Both forms replace the `/api/a2a/<namespace>/<agent-name>/` URL paths that kagent 0.x served over HTTP.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit, optional: as a bare paragraph between the table and the contextId paragraph, this sentence reads as part of the addressing rules. It was easier to scan as the > [!NOTE] it replaced. Feel free to ignore.

Signed-off-by: Rachael Graham <rachael.graham@solo.io>
Signed-off-by: Rachael Graham <rachael.graham@solo.io>
@Rachael-Graham
Rachael-Graham merged commit 543e1da into main Oct 15, 2026
4 checks passed
@Rachael-Graham
Rachael-Graham deleted the feedback7 branch October 15, 2026 19:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants