Repository navigation
Conversation
EItanya
marked this pull request as ready for review
October 19, 2026 18:48
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
moezdil
reviewed
Oct 19, 2026
| runtimev1.MemoryService_AddSessionBatch_FullMethodName: auth.AccessRuntime, | ||
| runtimev1.MemoryService_Search_FullMethodName: auth.AccessRuntime, | ||
| runtimev1.MemoryService_List_FullMethodName: auth.AccessRuntime, | ||
| runtimev1.MemoryService_Delete_FullMethodName: auth.AccessRuntime, |
Contributor
There was a problem hiding this comment.
users lose any way to delete their own memory
Contributor
Author
There was a problem hiding this comment.
That's a great point, it needs to be OR'd
Contributor
There was a problem hiding this comment.
or'd user path must ignore request user_id too
moezdil
reviewed
Oct 19, 2026
| } | ||
| return publicKey, nil | ||
| }, jwt.WithValidMethods([]string{"ES256", "RS256", "RS384", "RS512"}), | ||
| jwt.WithIssuer(v.issuer), jwt.WithAudience(runtimeJWTAudience), jwt.WithExpirationRequired(), jwt.WithIssuedAt()) |
Contributor
There was a problem hiding this comment.
would a small clock skew reject tokens here? (m not sure, kust asking)
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
EItanya
force-pushed
the
feat/runtime-actor-jwt
branch
from
October 19, 2026 20:35
6edf900 to
757770f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Actors now authenticate to the controller with Substrate-issued JWTs in the standard
Authorizationheader. A separate runtime listener (:8084by default) requires Actor JWTs and allows only TaskStore and Memory. The user listener keeps its configured authentication mode and rejects Actor JWTs as user credentials.TaskStore checks the session, atespace, and current Actor UID. Actor memory access derives its agent and user scope from that persisted binding. Users can also list and delete their own memories through the user listener, using their authenticated identity rather than a request-supplied user ID. This works without a live actor or session. Actors do not inherit their session owner's general API permissions.
Substrate egress replaces a placeholder with a five-minute JWT for the
kagent-runtimeaudience. The controller verifies it through Substrate OIDC discovery/JWKS using the existing JWT dependencies. This works with the pinned Substrate v0.6.0-alpha3.config.substrate.actorJwtIssuerdefaults tohttps://idp.ate-system.svc.Controller and runtime images must upgrade together; older runtime snapshots must be recreated. Actor memory now uses the stored
namespace/nameagent reference as its key. Existing entries keyed by runtime display names are not migrated, but users can still list and delete them using those keys.Validated real JWT injection, credential rejection, and checkpoint/fork restoration on kagent, Codex, Claude, and BYO ADK. Focused Go tests cover user memory ownership through gRPC and actor session scoping. Affected-package lint, Python tests, 52 Helm checks, and protobuf checks also passed. Full gRPC and repository lint reruns were limited by local temporary-volume exhaustion and envtest/etcd startup failures.