github kagent-dev/kagent v1.0.0

one hour ago

What's Changed

Features

Bug Fixes

  • fix(ui): chat interface overflows viewport causing input to be hidden below fold by @onematchfox in #2081
  • fix(ui): avoid false stale chat send guard by @erauner12 in #2034
  • fix(go-adk): extract system prompt from genai.GenerateContentConfig in Ollama and Bedrock model providers by @supreme-gg-gg in #2118
  • fix(helm): support omitting image.registry in grafana-mcp chart by @michaelspinks in #2125
  • fix(helm): support omitting image.registry in querydoc chart by @michaelspinks in #2124
  • fix(security): patch CRITICAL/HIGH CVEs in golang-adk-full and app images by @jsonmp-k8 in #2133
  • fix(go-adk): openai embeddings generation by @supreme-gg-gg in #2132
  • fix(helm): omit empty repository segment in bundled image path by @michaelspinks in #2120
  • fix: intermittent Postgres deadlock for concurrent memory searches by @supreme-gg-gg in #2146
  • fix(deps): bump google-adk to 1.32.0 for Anthropic thinking blocks by @anxkhn in #2172
  • fix: fix typos in part_converter comments by @moezdil in #2195
  • fix(adk): annotate serialize_metadata_value as str | dict by @anxkhn in #2173
  • fix(ui): fix model name editing on the model config form by @Valyrian-Code in #1979
  • fix: correct package comment in v1alpha2 groupversion_info by @moezdil in #2183
  • fix(crewai): unwrap Part before DataPart check so structured inputs are used by @anxkhn in #2231
  • fix(helm): expose nodeSelector and tolerations for kagent-tools subchart by @the-mentor in #2213
  • fix(helm): make the cluster DNS domain configurable by @shekhargit1912 in #2209
  • fix: parse migration filenames the same way golang-migrate does by @moezdil in #2194
  • fix: build sandbox runtime outside QEMU emulation by @peterj in #2299
  • fix: set kgateway.dev/a2a as appProtoco for BYO agents by @supreme-gg-gg in #2305
  • fix(db): normalize agent name in memory vector search by @moezdil in #2307
  • fix(adk/bedrock): coerce nil tool-call args to empty object by @go-faustino in #2222
  • fix: correct webhook typo in CLI help text by @tziyon31 in #2203
  • fix(build): use AZURE_OPENAI_API_KEY env var name consistently by @moezdil in #2310
  • fix(security): scope task get, create, and delete to the owner by @moezdil in #2265
  • fix(adk): keep token refresh loop alive after a failed read by @moezdil in #2330
  • fix(acp-shim): drain child stdout during terminate to avoid teardown deadlock by @tomsen02 in #2338
  • fix(adk): keep full session state when num_recent_events is set by @moezdil in #2329
  • fix(go-adk): add per-call session isolation for Agent tools by @yashrajshuklaaa in #2153
  • fix: point currency sample at the new Frankfurter API endpoint by @shreyasskasetty in #2370
  • fix(controller): wire up SessionSharesHandler in NewHandlers by @onematchfox in #2363
  • fix(ui): stop rendering the model's thought signature in the answer by @garlicKim21 in #2355
  • fix(ui): make the system theme reachable from the theme control by @garlicKim21 in #2352
  • fix(ui): stop breaking words mid-word in chat messages by @garlicKim21 in #2351
  • fix(otel): stop sending traces to api.openai.com and cleanup by @krisztianfekete in #2400
  • fix(ToolsSection): resolve duplicate key issue in tool rendering by incorporating index in keys by @entee28 in #2419
  • fix(ui): adjust header container max-width to prevent sidebar overlap by @AyushKumar123456789 in #2435
  • fix: ensure API key passthrough works for OpenAI embedding models by @onematchfox in #2457
  • fix(kagent-adk): surface the sub-agent's ask_user question in remote_hitl_hint by @vramahandry in #2495
  • fix: reclaim the AgentInstance task slot after an interrupted turn by @QuentinBisson in #2490
  • fix(agentplugins): reject unsafe and conflicting skill selections by @Whxuan0701 in #2505
  • fix: avoid starting actors during instance creation by @EItanya in #2552
  • fix(build): pin kube-api-linter plugin to the workspace Go toolchain by @sbx0r in #2535
  • fix: persist HITL tasks across actor suspension by @EItanya in #2567
  • fix: archive a parked question before its reply by @Charlesthebird in #2616
  • fix: preserve A2A transcript order with metadata by @EItanya in #2621
  • fix(controller): restore services and RemoteMCPServer discovery for controller-v2 by @supreme-gg-gg in #2639
  • fix(controller): restore reconciler for MCPServer in controller-v2 by @supreme-gg-gg in #2644
  • fix(otel): restore distributed tracing for the controller and agent runtimes by @codyhartsook in #2663
  • fix: restore ate-api ActorTemplate metadata by @EItanya in #2664
  • fix: wire runtime revisions into substrate inventory by @EItanya in #2703
  • fix(ui): preserve post-login redirect target through oauth2-proxy sign-in by @onematchfox in #2533
  • fix(go-adk): surface the sub-agent's ask_user question in RemoteHitlHint by @vramahandry in #2475
  • fix: migrate checkpoints to Substrate v0.0.26 by @EItanya in #2738
  • fix(adk): keep Ollama tool property order stable across requests by @garlicKim21 in #2693
  • fix: preserve conversation identity and history across forks by @EItanya in #2754
  • fix: generalize database conflict errors by @EItanya in #2780
  • fix(ui): keep the transcript pinned while it settles, and wait for the app to boot by @Charlesthebird in #2776
  • fix: trace outbound A2A gateway calls by @yashrajshuklaaa in #2779
  • fix(helm): merge podLabels into bundled Postgres pod template by @jrhuerta in #2749
  • fix: safely collect runtime revisions in a leader-elected runnable by @EItanya in #2742
  • fix(ui): decide the agent rail's active state by route, not by id or exact path by @Charlesthebird in #2778
  • fix(adk): map cached and reasoning tokens in Responses usage by @joao-dantas in #2766
  • fix: make A2A task admission atomic by @EItanya in #2792
  • fix(helm): use kagent-tools namespace in URL by @shubhamojha1 in #2797
  • fix(helm): disable controller metrics when bindAddress is empty or 0 by @Gous0786 in #2785
  • fix(adk): export a turn's spans before its terminal event leaves the process by @dhaifley in #2786
  • fix(adk): propagate trace context on outbound LLM and MCP HTTP calls by @TigerkidYang in #2809
  • fix: discover Kubernetes issuer for kubectl-ate by @yashrajshuklaaa in #2770
  • fix(adk): allow a keyless OpenAI-compatible baseUrl by @QuentinBisson in #2739
  • fix(ui): ten fixes in the agent rail and the schedules empty state by @Charlesthebird in #2820
  • fix(harness): reload continuation state after Substrate restore by @supreme-gg-gg in #2823
  • fix(mcp): reject missing task input responses by @EItanya in #2816
  • fix: provision actor egress policies with Substrate v0.0.30 by @EItanya in #2839
  • fix(ui): keep long-running agent streams open and expose MCP requireApproval by @supreme-gg-gg in #2826
  • fix(ui): let a remote MCP server save, and the fixes around it by @Charlesthebird in #2840
  • perf: speed up runtime preparation and E2E CI by @EItanya in #2844
  • fix(python): retain zero JWT expiry for AgentSTS cache by @tryambak2019 in #2833
  • fix: skills-init checkout passes SHA as revision, not pathspec (#2608) by @boxcee-interview in #2720
  • fix(ui): work over plain http, and catch render crashes at the boundaries by @Charlesthebird in #2865
  • fix: use Substrate beta4 gateway credential injection by @EItanya in #2868
  • fix: serialize AgentInstance lifecycle execution by @EItanya in #2857
  • fix(ui): isolate theme hook from refreshable provider by @Dragonzz27 in #2878
  • fix(ui): give checkpoint delete cancel buttons unique data-testids (#2871) by @boxcee-interview in #2877
  • fix: key STS token cache by acting subject, not session alone by @QuentinBisson in #2459
  • fix(codex): ignore child-thread notifications during delegation by @EItanya in #2914
  • fix(harness): Disable bare mode for Claude Code by @supreme-gg-gg in #2923
  • fix: honor kagent Harness command and args by @marosset in #2934
  • fix(ui): wait for schedule deletion redirect in live test by @Dragonzz27 in #2879
  • fix(hitl): compose the same pause text in every runtime and always declare the extension by @QuentinBisson in #2472
  • fix(harness): hold the Claude prompt until Claude Code can trace the turn by @dhaifley in #2943
  • fix: flush buffered OTEL logs by @yashrajshuklaaa in #2772
  • fix(byo): centralize ADK runtime configuration by @EItanya in #2965
  • fix(kagent-adk): compact MCP App tool results only when the result carries a UI resource by @AmirF194 in #2579
  • fix: wire Helm authentication settings into controller startup by @EItanya in #2971
  • fix: expire idle sessions through the delete workflow by @EItanya in #2970
  • fix(adk): keep Ollama tool call argument order stable across requests by @garlicKim21 in #2988
  • fix(controller): simplify agent preparation and retry handling by @EItanya in #2994
  • fix(adk): pass MCP embedded resource text to OpenAI-compatible models by @acherifi in #2992
  • fix(e2e): wait for controller health and parallelize independent tests by @EItanya in #2993
  • fix: repair image scans and use uv-managed Python by @EItanya in #2995
  • fix(ui): report harness delete failures by @pai in #2964
  • fix: keep Go ADK SQLite connections out of VM snapshots by @EItanya in #3004
  • fix(api): defer unsupported configuration fields by @EItanya in #3007
  • fix: allow disabling kagent model streaming by @EItanya in #3028
  • fix(translator): accept Mistral ModelConfigs in v1alpha3 by @moezdil in #3008
  • fix(controller): honor kagent.dev/discovery=disabled for RemoteMCPServer and MCPServer tool discovery by @teemow in #2752
  • fix(ui): call the per-chat unit a session on the agent concepts card by @Charlesthebird in #3034
  • fix: propagate helm postgres pool variables to db connection by @jcopi in #3032
  • fix(adk): guard nil tool-call args and coerce to empty object in OpenAI-compatible adapters by @alexdarbyshire in #2852
  • fix(ui): show agent template create errors beside the Create button by @Charlesthebird in #3075
  • fix(ui): keep a new chat's title in the chat list after leaving it by @mmadhura1014 in #3001
  • fix(adk): free runtime send slot before settling the task by @Charlesthebird in #3079
  • fix(harness): pin Claude Code 2.1.285 by @thomasbarrett in #3076
  • fix(ui): hide other users' conversations from new-chat rail by @pood1e in #3091
  • fix(substrate): isolate worker pool placement by namespace by @adalundhe in #3089
  • fix(ui): count Agent resources in the dashboard Agents tile by @Charlesthebird in #3105
  • fix(ui): note shared workers on the Substrate page by @Charlesthebird in #3108
  • Exit non-zero when cli kagent install fails by @iplay88keys in #3109
  • fix: stabilize unit tests and scheduled run timeouts by @EItanya in #3129
  • fix(ui): fix three flaky browser tests by @Charlesthebird in #3118
  • fix(adk): replace retired default Anthropic model by @yashrajshuklaaa in #3039
  • fix: make push notification JWT signing optional with operator-managed PEM keys by @supreme-gg-gg in #3122
  • fix(ui): fix the remaining flaky browser tests, and cut redundant ones by @Charlesthebird in #3132
  • fix(cli): rely on Helm for install namespaces and reject unmanaged CRDs by @iplay88keys in #3137
  • fix: restore A2A timeline ordering and immediate approval prompts by @supreme-gg-gg in #3142
  • fix(ui): give each e2e dev server its own pre-bundle cache by @Charlesthebird in #3141
  • fix: update vulnerable dependencies in runtime images by @EItanya in #3159
  • fix: stabilize e2e sends and Codex cancellation by @EItanya in #3181
  • fix(ui): serve the mock playwright suite from a production build, not the dev server by @Charlesthebird in #3163
  • fix: make session share tokens read-only by @EItanya in #3189
  • fix(sts): key the ADK token cache by acting subject, not session alone (Python) by @QuentinBisson in #2460
  • fix(a2a): return not found for expired and missing sessions by @supreme-gg-gg in #3231
  • fix(ui): prevent chat rail flicker when switching conversations by @vedantlavale in #3218
  • fix(ui): preserve streamed tool results by @pood1e in #3098
  • fix(checkpoint): allow failed checkpoint cleanup by @spichen in #3199
  • fix(ui): remediate CVEs in UI dependencies and base image by @cjlg-soloio in #3252
  • fix(adk): enable default tools and simplify sandbox execution by @supreme-gg-gg in #3283
  • fix(cli): uninstall everything kagent install creates by @iplay88keys in #3285
  • fix(auth): enforce scoped authorization for Kubernetes-backed resources by @supreme-gg-gg in #3281
  • fix(substrate): check existing atespaces before creating them by @spichen in #3260
  • fix(docker): give the Go runtime user a writable HOME by @teemow in #3161
  • fix(deps): bump Go to 1.27.3 for security fixes by @EItanya in #3304
  • fix(substrate): scope Substrate reads and page tokens to the watched namespaces by @danielle-mustillo in #3261
  • fix(session): expire abandoned input and auth waits by @adalundhe in #3254
  • fix(ui): keep following a chat turn when its stream breaks by @garlicKim21 in #3198
  • fix(a2a): deliver push notifications concurrently by @EItanya in #3366
  • fix(build): set the version -X targets from the Go module path by @fiunchinho in #3376
  • fix(codex): report the turn's error message by @fiunchinho in #3377
  • fix(ui): show one loading state in the agent switcher by @vedantlavale in #3237
  • fix: honor configured controller service account during install by @iplay88keys in #3406
  • fix(ui): show consistent empty states for denied substrate inventory by @supreme-gg-gg in #3392
  • fix(cli): preserve Substrate CLI access alongside controller grants by @iplay88keys in #3420
  • fix: include image pull secrets in substrate worker pool service account by @jcopi in #3443
  • fix(install): keep model credentials out of process arguments by @iplay88keys in #3446
  • fix(api): remove unused Harness status and ADK fields by @EItanya in #3454
  • fix(ci): enforce protobuf compatibility after pre-RC cleanup by @EItanya in #3455
  • fix(adk): allow the Bedrock runtime origin in Harness egress by @xianshujun in #3438
  • fix(helm): narrow and separate controller RBAC permissions by @EItanya in #3378
  • fix(ui): remediate CVEs in ui by @Charlesthebird in #3489
  • fix(adk): retry TaskStore calls through a controller restart by @adalundhe in #3391
  • fix(adk): tell the model why a person rejected a tool call by @fiunchinho in #2947
  • fix(cli): confirm before deleting self-managed WorkerPools on uninstall by @iplay88keys in #3511
  • fix(mcp): drop invoke_agent's top-level oneOf so Gemini accepts it by @jotacamou in #3534
  • fix(taskstore): finalize failed tasks after execution cancellation by @EItanya in #3541
  • fix: backport pre-release fixes to v1.0.x by @EItanya in #3586

Documentation

  • docs: fix duplicate descriptions and broken link in README by @moezdil in #2068
  • docs: fix typos and errors in component READMEs by @moezdil in #2070
  • docs: fix typos and list formatting in contributor docs by @moezdil in #2069
  • docs: replace outdated AutoGen reference in SECURITY.md by @moezdil in #2110
  • docs(python): fix kagent-langgraph README import to kagent.langgraph by @anxkhn in #2167
  • docs(python): fix KAgentSession import path in kagent-openai README by @anxkhn in #2163
  • docs: fix stale references and wording by @moezdil in #2184
  • docs: list bash in get_skill_tools Returns docstring by @anxkhn in #2198
  • docs: fix broken file links by @moezdil in #2221
  • docs: point prompt template integration link to compiler by @anxkhn in #2228
  • docs: add STYLE.md with Go style guide by @EItanya in #2186
  • docs: fix stale architecture references by @moezdil in #2308
  • docs: fix currency LangGraph sample README to match OpenAI implementation by @shreyasskasetty in #2356
  • docs: require atomic state transitions by @EItanya in #2617
  • docs: refresh architecture documentation by @EItanya in #2690
  • docs: add API design guidelines and refresh OIDC architecture by @EItanya in #2958
  • refactor: standardize environment settings and generate their reference by @EItanya in #2967
  • docs: update README for the v1 architecture by @EItanya in #2996
  • docs: add local AGENTS.md guides by @EItanya in #3035
  • docs: narrow agent contribution guidance by @timflannagan in #3081
  • docs: Document required tooling by @timflannagan in #3186
  • docs(test): add Given/When/AssertThat testing skill by @jjamroga in #3448

Testing

  • test(adk): assert real tls_insecure_skip_verify tag in omitempty test by @anxkhn in #2199
  • test: add AgentInstance interaction e2e by @EItanya in #2514
  • test: expand AgentInstance A2A end-to-end coverage by @EItanya in #2518
  • test(ui): fix three flaky browser-suite waits by @Charlesthebird in #2612
  • test: parallelize substrate e2e suite by @EItanya in #2661
  • test(ui): one lifecycle journey per resource, and bugs fixes found during rewrite by @toreysoloio in #2825
  • test(ui): run the live Playwright suite in CI against the built UI image by @toreysoloio in #2874
  • test: run shared agent E2Es across all harnesses by @EItanya in #2919
  • Run upgrade tests through kagent install by @iplay88keys in #3113
  • test(e2e): pass mock LLM handlers to startModelRecorder by @danielle-mustillo in #3264
  • test(core): cover token threshold compaction through harnesses by @adalundhe in #3291
  • test(e2e): deflake egress policy probes by @EItanya in #3488
  • test(secretmaterial): cover ownership checks and Secret write paths by @vedantlavale in #3451

Other Changes

New Contributors

Full Changelog: v0.9.10...v1.0.0

Don't miss a new kagent release

NewReleases is sending notifications on new releases.