fix: security audit#90
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
WalkthroughAdds credentialed-URL validation and redirect-safe HTTP clients for bridges; filters sensitive environment variables and introduces process-group registration/cleanup; enforces API request body limits and stricter loopback guards; redacts prompt/tool payloads; tightens network envelope secret/proof checks; validates managed extension install names; adds installer provenance verification; tests and a .gitignore entry. ChangesBridge provider credential handling (Linear, Teams, Telegram)
Environment filtering & process-group management
HTTP API hardening and prompt redaction
Network envelope validation and replay handling
Tool approval token scope & matching
Extension installation path validation
Installer provenance verification & site tests
.gitignore
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
Review rate limit: 4/5 reviews remaining, refill in 12 minutes. Comment |
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (3)
internal/extension/install_managed_test.go (1)
66-72: 💤 Low valueAdd
t.Parallel()to subtests.The subtests for unsafe name rejection are missing
t.Parallel()calls. Per coding guidelines, subtests should uset.Parallel()by default.♻️ Suggested fix
for _, name := range []string{"../escape", "nested/name", `nested\name`, ".", "..", "/abs"} { t.Run("Should reject unsafe name "+name, func(t *testing.T) { + t.Parallel() if got, err := ManagedInstallPathChecked(homePaths, name); err == nil { t.Fatalf("ManagedInstallPathChecked(%q) = %q, nil; want error", name, got) } }) }As per coding guidelines: "Use
t.Run("Should ...")subtests witht.Parallelas default"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@internal/extension/install_managed_test.go` around lines 66 - 72, The subtests in the loop calling t.Run should call t.Parallel() and must capture the loop variable to avoid concurrency races; update the anonymous func passed to t.Run in internal/extension/install_managed_test.go to begin with t.Parallel() and capture the loop variable (e.g., local := name) before using it in ManagedInstallPathChecked; keep the rest of the assertion logic the same so each subtest runs in parallel safely.internal/api/core/tools.go (1)
428-464: ⚡ Quick winCentralize this approval-scope normalization helper.
approvalScopeFieldnow duplicates the same security rule already implemented ininternal/tools/approval_token.go. Keeping both copies in sync is easy to miss later, and any drift would make mint-time and store-time validation disagree. Consider moving this helper intointernal/toolsand reusing it from both call sites.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@internal/api/core/tools.go` around lines 428 - 464, The file defines approvalScopeField (used by approvalScopeFromRequest) which duplicates logic in internal/tools/approval_token.go; move the normalization/validation helper out of internal/api/core/tools.go into internal/tools (e.g., export or add a function in approval_token.go such as ApprovalScopeField or NormalizeApprovalScopeField), update approvalScopeFromRequest to call that centralized function, and replace the duplicate implementation wherever else it exists so both mint-time and store-time use the same helper; ensure function signature and returned toolspkg.NewValidationError behavior remain the same so callers (approvalScopeFromRequest) continue to work without other changes.internal/subprocess/process.go (1)
278-293: 💤 Low valueConsider consolidating duplicate cleanup implementations.
This function is nearly identical to
cleanupStartedTerminalCommandininternal/acp/handlers.go. Both follow the same kill → wait → force-exit pattern. Consider extracting a shared helper inprocutilto reduce duplication.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@internal/subprocess/process.go` around lines 278 - 293, The cleanup logic in cleanupStartedManagedCommand and cleanupStartedTerminalCommand is duplicated; extract a shared helper (e.g., CleanupStartedCommand or CleanupStartedProcessSequence) into procutil that accepts an *exec.Cmd and defaultProcessGroupWait, and implements the kill → wait → forceManagedProcessGroupExit sequence returning errors.Join(errs...); update both cleanupStartedManagedCommand and cleanupStartedTerminalCommand to call this new procutil helper to remove duplication while preserving existing error wrapping messages and behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@extensions/bridges/linear/api.go`:
- Around line 295-298: The credentialed HTTP requests currently validate the
initial URL with validLinearCredentialedURL() but then use an http.Client that
can follow redirects, exposing bearer tokens or client credentials; update the
code paths that build requests (e.g., where http.NewRequestWithContext(...) is
called and the client used for GraphQL/token calls) to configure the
http.Client.CheckRedirect to either deny redirects or validate each redirect
target with validLinearCredentialedURL() before following; apply the same fix
for the other request block referenced around the code handling lines 368–376 so
no redirect can send sensitive headers to untrusted hosts.
In `@extensions/bridges/teams/provider.go`:
- Line 45: The client teamsAuthHTTPClient currently allows automatic redirects
which can forward credentialed bodies; update its redirect handling to block or
validate redirects: set teamsAuthHTTPClient.CheckRedirect to a function that
returns http.ErrUseLastResponse to reject all redirects, or implement logic that
calls validatedTeamsCredentialedURL on each redirect Location and only allows
the redirect when it returns true. Apply this change where teamsAuthHTTPClient
is used (and any other HTTP clients issuing credentialed requests) so
credentialed POST/PUT bodies are never blindly forwarded to unvalidated hosts.
In `@extensions/bridges/telegram/provider_test.go`:
- Around line 270-272: The current test only checks for a non-nil error from
verifyWebhookSecret; tighten it to assert the specific missing-secret failure by
asserting the returned error matches the expected sentinel or contains the
expected message. Update the assertion in provider_test.go where
verifyWebhookSecret is called to either use errors.Is(err, expectedErr) if there
is a package-level sentinel (e.g., ErrMissingSecret) or use a string containment
check (e.g., require.True/if !strings.Contains(err.Error(), "missing configured
secret") then t.Fatalf) to ensure the error is specifically the
configured-secret-missing case rather than any non-nil error.
In `@internal/network/router.go`:
- Around line 935-947: Clamp must use the envelope's original timestamp (TS)
when computing maxDeadline so dedupe entries aren't evicted based on current
now; change the logic that sets maxDeadline (currently maxDeadline :=
now.Add(maxReplayAge).UTC()) to compute the ceiling as
TS.Add(maxReplayAge).UTC() when the envelope timestamp is present (fall back to
now.Add(maxReplayAge) only if TS is missing), then continue the existing
expiresAt and deadline comparisons (using deadline, maxReplayAge,
envelope.ExpiresAt) and keep the final now check as-is.
In `@internal/network/validate.go`:
- Around line 373-382: The validation currently checks only Envelope.Body and
Envelope.Ext for raw secrets; extend validateEnvelopeContainsNoRawSecrets to
also inspect Envelope.Proof using the same helper envelopeRawValueContainsSecret
and return a wrapped ErrInvalidBody error when a raw secret is found.
Specifically, add a check for env.Proof (and iterate if Proof is a collection
similar to Ext) and produce the same error message pattern but reference
"network proof" (e.g., "%w: raw secret material is not allowed in network
proof") so raw claim_token/OAuth/PKCE/secret-binding values cannot be
transported via Proof.
In `@packages/site/public/install.sh`:
- Around line 130-131: The script currently builds SIGNATURE_URL and
CERTIFICATE_URL from BASE_URL which may contain "latest", risking mixed-release
downloads; modify the install flow to resolve "latest" once into a concrete tag
(store in a variable like RESOLVED_TAG or VERSION) before constructing all
download links, then rebuild ARCHIVE_URL, CHECKSUMS_URL, SIGNATURE_URL and
CERTIFICATE_URL using that pinned RESOLVED_TAG instead of BASE_URL so every
asset comes from the same resolved release (update the code around BASE_URL,
SIGNATURE_URL, CERTIFICATE_URL and any ARCHIVE_URL/CHECKSUMS_URL definitions
accordingly).
- Line 5: Update the COSIGN_CERT_IDENTITY_REGEXP in install.sh to remove
acceptance of refs/heads/main and only match tag-based release refs (e.g.,
refs/tags/v...); locate the COSIGN_CERT_IDENTITY_REGEXP variable definition and
adjust its regex so it no longer includes the |refs/(heads/main) alternative and
only allows the refs/tags/v[0-9]... pattern for release tags.
---
Nitpick comments:
In `@internal/api/core/tools.go`:
- Around line 428-464: The file defines approvalScopeField (used by
approvalScopeFromRequest) which duplicates logic in
internal/tools/approval_token.go; move the normalization/validation helper out
of internal/api/core/tools.go into internal/tools (e.g., export or add a
function in approval_token.go such as ApprovalScopeField or
NormalizeApprovalScopeField), update approvalScopeFromRequest to call that
centralized function, and replace the duplicate implementation wherever else it
exists so both mint-time and store-time use the same helper; ensure function
signature and returned toolspkg.NewValidationError behavior remain the same so
callers (approvalScopeFromRequest) continue to work without other changes.
In `@internal/extension/install_managed_test.go`:
- Around line 66-72: The subtests in the loop calling t.Run should call
t.Parallel() and must capture the loop variable to avoid concurrency races;
update the anonymous func passed to t.Run in
internal/extension/install_managed_test.go to begin with t.Parallel() and
capture the loop variable (e.g., local := name) before using it in
ManagedInstallPathChecked; keep the rest of the assertion logic the same so each
subtest runs in parallel safely.
In `@internal/subprocess/process.go`:
- Around line 278-293: The cleanup logic in cleanupStartedManagedCommand and
cleanupStartedTerminalCommand is duplicated; extract a shared helper (e.g.,
CleanupStartedCommand or CleanupStartedProcessSequence) into procutil that
accepts an *exec.Cmd and defaultProcessGroupWait, and implements the kill → wait
→ forceManagedProcessGroupExit sequence returning errors.Join(errs...); update
both cleanupStartedManagedCommand and cleanupStartedTerminalCommand to call this
new procutil helper to remove duplication while preserving existing error
wrapping messages and behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 5a456ef9-bda8-48d4-a83e-790344273db3
⛔ Files ignored due to path filters (1)
packages/site/content/runtime/core/getting-started/installation.mdxis excluded by!**/*.mdx
📒 Files selected for processing (44)
.gitignoreextensions/bridges/linear/api.goextensions/bridges/linear/provider.goextensions/bridges/linear/provider_test.goextensions/bridges/teams/provider.goextensions/bridges/teams/provider_test.goextensions/bridges/telegram/provider.goextensions/bridges/telegram/provider_test.gointernal/acp/handlers.gointernal/acp/handlers_test.gointernal/acp/process_tree_unix.gointernal/acp/process_tree_windows.gointernal/api/core/tools.gointernal/api/core/tools_test.gointernal/api/httpapi/handlers.gointernal/api/httpapi/handlers_error_test.gointernal/api/httpapi/handlers_test.gointernal/api/httpapi/helpers_test.gointernal/api/httpapi/middleware.gointernal/api/httpapi/prompt.gointernal/api/httpapi/routes.gointernal/api/httpapi/server.gointernal/api/httpapi/server_test.gointernal/extension/install_managed.gointernal/extension/install_managed_test.gointernal/extension/marketplace_lifecycle.gointernal/network/router.gointernal/network/router_test.gointernal/network/validate.gointernal/network/validate_test.gointernal/procutil/detached.gointernal/procutil/env.gointernal/procutil/env_test.gointernal/procutil/process_group_unix.gointernal/procutil/process_group_windows.gointernal/session/manager_start.gointernal/session/manager_start_test.gointernal/subprocess/process.gointernal/subprocess/signals_unix.gointernal/subprocess/signals_windows.gointernal/tools/approval_token.gointernal/tools/approval_token_test.gopackages/site/lib/public-install-contract.test.tspackages/site/public/install.sh
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@extensions/bridges/teams/provider_test.go`:
- Around line 767-769: The test currently only checks for any non-nil error from
fetchTeamsOpenIDMetadata; change the assertion to specifically assert the error
is a *bridgesdk.HTTPError (use errors.As or require.ErrorAs) and that its
StatusCode equals http.StatusTemporaryRedirect (307) so we prove the client
stopped on the redirect response; update the same pattern in the sibling
assertions around the other subtests (the blocks at the other reported
locations) to use ErrorAs + check err.StatusCode == http.StatusTemporaryRedirect
instead of a generic non-nil check.
In `@extensions/bridges/teams/provider.go`:
- Around line 2823-2834: The validator validTeamsCredentialedURL currently
allows http loopback hosts which enables cleartext token_url endpoints and can
leak client_secret via accessToken(); change the validator to disallow any
"http" scheme for credentialed flows by removing or disabling the http case
(isLoopbackTeamsHost) and only accept "https" hosts (login.botframework.com or
login.microsoftonline.com); if loopback support is required for tests, add a
separate test-only gate (e.g. an explicit dev/test flag like
ENABLE_TEAMS_LOOPBACK_FOR_TESTING) or provide a separate test-only validator
function and ensure accessToken() continues to call the credentialed validator
that rejects plain-http loopback URLs.
In `@internal/network/router.go`:
- Around line 941-943: The branch that currently returns now.UTC() when
deadline.Before(now) causes expiresAt to be <= now and allows replay dedupe to
be bypassed; modify the if branch in the deadline handling (the code using
variables deadline and now, related to markSeen/replay-window) to return
now.Add(time.Second).UTC() instead so the computed expiry is strictly in the
future (one second) and cannot be treated as already expired by markSeen's
expiresAt <= now check.
In `@internal/network/validate.go`:
- Around line 404-407: The current envelopeValueContainsSecret function only
flags secrets when the value is a non-empty string, letting raw secret material
hide in JSON keys; update envelopeValueContainsSecret to also check the key
itself using envelopeKeyCarriesRawSecret and treat a matching key as a secret
regardless of the value type, and additionally ensure any recursion/redaction
logic (used elsewhere in the file around envelopeKeyCarriesRawSecret and
envelopeValueIsNonEmpty) is applied to map/object keys as well so that keys like
"agh_claim_*" immediately return true; locate and modify
envelopeValueContainsSecret, envelopeKeyCarriesRawSecret, and any recursive
redaction helpers to enforce key-based detection consistently.
- Around line 433-435: The function envelopeStringContainsSecret incorrectly
flags whitespace-only strings as secrets because diagnostics.Redact trims
blanks; update envelopeStringContainsSecret to early-return false for strings
that are only whitespace (e.g., if strings.TrimSpace(value) == "") before
calling taskpkg.RedactClaimTokens or diagnostics.Redact so whitespace-only
optional fields are not treated as secrets.
In `@packages/site/public/install.sh`:
- Around line 56-63: The case that checks resolved_tag uses the loose pattern
v[0-9]* which allows unwanted suffixes; update the validation in the install
script to use the stricter tag pattern used by the provenance policy (e.g.,
require v<major>.<minor>.<patch> and optional canonical suffix rules) so
malformed tags are rejected—modify the case for resolved_tag and the associated
fail call (which reports resolved_url) to use that stricter regex/pattern and
ensure the success branch only prints tags that fully match the policy.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: a4e93947-923e-4f02-911f-5e257123b48a
⛔ Files ignored due to path filters (10)
.compozy/tasks/secaudit/reviews-001/issue_001.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_002.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_003.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_004.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_005.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_006.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_007.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_008.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_009.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-001/issue_010.mdis excluded by!**/*.md
📒 Files selected for processing (12)
extensions/bridges/linear/api.goextensions/bridges/linear/provider_test.goextensions/bridges/teams/provider.goextensions/bridges/teams/provider_test.goextensions/bridges/telegram/provider_test.gointernal/extension/install_managed_test.gointernal/network/router.gointernal/network/router_test.gointernal/network/validate.gointernal/network/validate_test.gopackages/site/lib/public-install-contract.test.tspackages/site/public/install.sh
✅ Files skipped from review due to trivial changes (1)
- packages/site/lib/public-install-contract.test.ts
🚧 Files skipped from review as they are similar to previous changes (4)
- internal/network/validate_test.go
- extensions/bridges/linear/api.go
- internal/extension/install_managed_test.go
- extensions/bridges/linear/provider_test.go
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@internal/network/validate_test.go`:
- Around line 327-407: The table-driven test entries use plain names like
"future timestamp outside replay window" and must follow the t.Run "Should ..."
pattern; update each case's name field (the struct entries with name: "...") to
a descriptive "Should ..." form (e.g., "Should reject future timestamp outside
replay window", "Should reject greet task write without proof", "Should reject
raw secret in body", etc.) so all cases in the table (the entries that mutate
Envelope, set wantErr/wantMatch) conform to the required t.Run naming
convention.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: b3492932-89fb-45c4-b5c9-0af7ab58f98b
⛔ Files ignored due to path filters (6)
.compozy/tasks/secaudit/reviews-002/issue_001.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-002/issue_002.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-002/issue_003.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-002/issue_004.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-002/issue_005.mdis excluded by!**/*.md.compozy/tasks/secaudit/reviews-002/issue_006.mdis excluded by!**/*.md
📒 Files selected for processing (8)
extensions/bridges/teams/provider.goextensions/bridges/teams/provider_test.gointernal/network/router.gointernal/network/router_test.gointernal/network/validate.gointernal/network/validate_test.gopackages/site/lib/public-install-contract.test.tspackages/site/public/install.sh
✅ Files skipped from review due to trivial changes (1)
- internal/network/validate.go
🚧 Files skipped from review as they are similar to previous changes (3)
- internal/network/router_test.go
- packages/site/public/install.sh
- packages/site/lib/public-install-contract.test.ts
## Release v0.0.1 This PR prepares the release of version v0.0.1. ### Changelog ## 0.0.1 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.1 This PR prepares the release of version v0.0.1. ### Changelog ## 0.0.1 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.2 This PR prepares the release of version v0.0.2. ### Changelog ## 0.0.2 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release - Fix release process ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows - Improve suite speed Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.2 This PR prepares the release of version v0.0.2. ### Changelog ## 0.0.2 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release - Fix release process - Fix release sync - Decouple release dry-run npm auth - Persist web assets git auth ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows - Improve suite speed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated web assets dependency to a newer version for improved stability and performance. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/compozy/agh/pull/211?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.2 This PR prepares the release of version v0.0.2. ### Changelog ## 0.0.2 - 2026-05-27 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout - Fix release dry-run token contract ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release - Fix release process - Fix release sync - Decouple release dry-run npm auth - Persist web assets git auth - Require npm auth before release merge ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows - Improve suite speed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated dependencies to latest versions. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/compozy/agh/pull/214?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Summary by CodeRabbit
Security Enhancements
Bug Fixes & Improvements