Skip to content

Auto-grant user secrets to self-authored packages, fork adoption, and one-click capability approval - #829

Merged
kody-bot merged 4 commits into
mainfrom
cursor/secret-approval-friction-ff03
Jul 21, 2026
Merged

kody-bot merged 4 commits into
mainfrom
cursor/secret-approval-friction-ff03

Conversation

@kentcdodds

@kentcdodds kentcdodds commented Jul 21, 2026 •

Copy link
Copy Markdown
Owner

Summary

Three friction reductions to the secret approval flows, keeping the gates that carry real security weight:

  1. Auto-grant for self-authored packages — packages the user authored (no community_forks row for the package id + user) can now read/use user-scoped secrets without an explicit allowed_packages grant. Enforced at the single chokepoint assertPackageCanAccessResolvedSecret, with a new community_forks.forked_package_id index (0073). This is check-time logic only — nothing is ever written to allowed_packages.
  2. Community fork adoption — a forked package that has been reviewed can be adopted via the new community_fork_adopt capability (requires a review_summary; records adopted_at + note on the fork row via migration 0074). Adopted forks get the same read/use auto-grant while keeping full fork provenance (listing id, origin commit). The pending_secret_package_approvals steering now offers review-and-adopt as the first resolution, with per-secret/bulk approval links as the alternative.
  3. One-click capability approval — the ?capability= deep link now renders the same "Approve secret access" Approve/Reject card as host and package approvals, instead of prefilling the secret editor and requiring a full form save.

Hardening added after an independent security review of the diff:

  • Mutations stay gated: secret_set, secret_delete, and OpenAPI token-refresh writes from package runtimes pass intent: 'mutate' and always require the explicit allowed_packages grant — regardless of provenance or adoption. Auto-grant covers read/use only (fetch placeholders, mounts, jwt-sign, capability inputs).
  • Capability name validation: one-click capability approval rejects values outside [a-zA-Z0-9_.:-]{1,200}.

Known accepted limitations

  • Fork provenance is package-id based: an agent that copies listing files into a fresh package_save creates a "self-authored" package. Adoption makes the honest path cheaper than laundering while preserving provenance; host approval and the mutation gate remain the enforced backstops.
  • The auto-grant applies retroactively to existing non-forked packages.

Test plan

  • Unit tests: fork/self-authored/adopted allow/deny paths, intent: 'mutate' deny/allow, adoption capability (happy path, not-a-fork, already-adopted, short review summary, cross-user isolation), capability approve/reject/dedupe/invalid-name, executor next-step with/without approval URL
  • npm run validate (format, lint, typecheck, unit tests, Playwright E2E, MCP E2E)
System recap — extends existing primitives (medium risk)

Mode: recap · Base: main @ ff0ac1f8 · Head: 087a77e2

Classification: extends — the package secret approval gate becomes fork-only for read/use (auto-grant for self-authored packages and adopted forks, mutations still gated), and capability approval gains the same one-click card hosts and packages already have.

Primitives touched

Primitive Group Impact
mcp-server surfaces extends — assertPackageCanAccessResolvedSecret allows non-forked and adopted packages for intent: 'use'; secret_set/secret_delete/OpenAPI refresh pass intent: 'mutate'; new community_fork_adopt capability; capability denial wording points at one-click approval
app-ui surfaces extends — ?capability= deep link renders the Approve/Reject card; approve appends a format-validated name to allowed_capabilities
community-listings assistant extends — fork rows gain adopted_at/adoption_note (0074); new provenance/adoption repo + service functions
d1-app-db storage extends — index on community_forks.forked_package_id (0073), adoption columns (0074)
openapi-bindings assistant extends — token-refresh secret writes marked as mutations
jobs assistant composes — test updated for new capability denial wording

System map

Package runtimes resolving user secrets consult community-fork provenance and adoption state before requiring an allowed_packages grant (reads only), and capability approvals flow through the account secrets one-click card.

Legend: green = composes (wiring only) · amber = extended by this PR · red = new primitive · gray = context (unchanged, included only when an edge crosses it).

flowchart LR
	mcpServer["mcp-server<br/>MCP endpoint"]:::extended
	communityListings["community-listings<br/>Community packages"]:::extended
	d1AppDb["d1-app-db<br/>D1 app database"]:::extended
	appUi["app-ui<br/>Browser app"]:::extended
	mcpServer -->|"fork provenance + adoption check, intent use vs mutate"| communityListings
	mcpServer -->|"community_fork_adopt writes adopted_at + note"| communityListings
	communityListings -->|"forked_package_id index, adoption columns"| d1AppDb
	mcpServer -->|"capability approval link ?capability="| appUi
	appUi -->|"approve appends validated allowed_capabilities"| d1AppDb
	classDef touched fill:#1a7f37,color:#fff
	classDef extended fill:#9a6700,color:#fff
	classDef added fill:#cf222e,color:#fff
	classDef untouched fill:#57606a,color:#fff
Loading

Before / after

Before: every package runtime (including packages the user authored) needed each user secret to list its id in allowed_packages; capability approval required editing the secret form and saving.

After: self-authored packages and adopted forks read/use user secrets without a grant; unadopted community forks keep the explicit grant with adopt-or-approve steering; mutations (secret_set, secret_delete, OpenAPI refresh writes) always require the explicit grant. The ?capability= link shows the same one-click Approve/Reject card as host/package approvals, with capability names validated against [a-zA-Z0-9_.:-]{1,200}.

Invariants

Per-user isolation is preserved: the provenance lookup and the adoption UPDATE both filter by forked_package_id and forker_user_id, and all secret resolution stays scoped by userId. Host approval (deny-by-default egress) and capability allowlists remain enforced on every path, including ad hoc execute.

Open in Web Open in Cursor 

Summary by CodeRabbit

  • New Features

    • Added one-click approval for secret capabilities in the account secrets interface, including requested capability and current allowed capabilities.
    • Introduced capability-scoped and bulk approval-link workflows for pending secret access.
    • Added support for adopting reviewed community-forked packages.
  • Bug Fixes

    • Enforced consistent access rules across self-authored packages, adopted forks, and unadopted forks (including required grants for secret updates/mutations).
    • Improved validation and next-step error guidance for capability approvals.
  • Documentation

    • Updated secret authorization/provenance rules and expanded the approval/host/capability guidance across setup, authoring, lifecycle, and integration guides.

cursoragent and others added 3 commits July 21, 2026 18:30
Only packages forked from community listings still require an explicit
allowed_packages grant. Provenance is determined by the presence of a
community_forks row for the package id, with a new index on
forked_package_id.

Co-authored-by: Kent C. Dodds <me+github@kentcdodds.com>
The ?capability= deep link now renders the same Approve/Reject card as
host and package approvals instead of prefilling the secret editor.
Approving appends the capability to allowed_capabilities.

Co-authored-by: Kent C. Dodds <me+github@kentcdodds.com>
Require the explicit allowed_packages grant for secret mutations
(secret_set, secret_delete, OpenAPI refresh writes) regardless of
package provenance, and validate one-click capability approval names
against a conservative identifier pattern.

Co-authored-by: Kent C. Dodds <me+github@kentcdodds.com>
@coderabbitai

coderabbitai Bot commented Jul 21, 2026 •

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds capability-scoped secret approvals, community-fork adoption, provenance-aware package access, mutation grants, indexed fork lookups, and corresponding documentation, instructions, and tests.

Changes

Secret approval flow

Layer / File(s) Summary
Capability approval resolution and persistence
packages/worker/src/app/account-secrets-data.ts, packages/worker/src/app/handlers/account-secrets.ts, packages/worker/src/mcp/secrets/allowed-capabilities.ts
Capability requests are validated, resolved, approved, and persisted through capability-specific account-secret actions.
Capability approval interface and validation
packages/worker/client/routes/account-secrets.tsx, packages/worker/client/routes/account-approval-shared.ts, packages/worker/src/app/loader-data.ts, packages/worker/src/app/handlers/account-secrets.node.test.ts, packages/worker/src/mcp/secrets/allowed-capabilities.node.test.ts
The UI displays requested and current capabilities, suppresses duplicate approvals, and tests validation, deduplication, and URL handling.
Capability messaging
packages/worker/src/mcp/executor.ts, packages/worker/src/mcp/secrets/errors.ts, packages/worker/src/jobs/service.node.test.ts, packages/worker/src/mcp/secrets/errors.node.test.ts
Capability-denial guidance now points to account-secret approval links or capability approval instructions.

Community-fork package authorization

Layer / File(s) Summary
Fork provenance and access decisions
packages/worker/src/community/repo.ts, packages/worker/src/mcp/secrets/package-access.ts, packages/worker/src/mcp/capabilities/secrets/*, packages/worker/src/mcp/capabilities/openapi-provider/operation-request.ts
Secret access distinguishes self-authored, adopted, and unadopted forks, while mutation paths require explicit package grants.
Fork adoption workflow
packages/worker/src/community/service.ts, packages/worker/src/community/types.ts, packages/worker/src/mcp/capabilities/community/adopt.ts, packages/worker/src/mcp/capabilities/community/domain.ts, packages/worker/migrations/0074-community-fork-adoption.sql
Fork adoption metadata, validation, persistence, MCP exposure, and idempotent adoption behavior are added.
Lookup storage and authorization coverage
packages/worker/migrations/0073-community-forks-forked-package-index.sql, packages/worker/src/community/community-flow-test-schema.ts, packages/worker/src/mcp/secrets/package-access.node.test.ts, packages/worker/src/mcp/fetch-gateway.node.test.ts, packages/worker/src/mcp/capabilities/openapi-provider/operation-request.node.test.ts
Fork lookup indexing and tests cover provenance checks, adoption state, missing approvals, and mutation intent.

Authorization contract and guidance

Layer / File(s) Summary
Storage and secret behavior documentation
docs/contributing/architecture/data-storage.md, docs/use/secrets-and-values.md
Documentation defines read/use and mutation grant requirements for user-scoped, package-scoped, self-authored, adopted, and unadopted-fork secrets.
Package approval workflows
docs/guides/account-secret-setup.md, docs/guides/integration-bootstrap.md, docs/guides/package-authoring.md, docs/guides/package-lifecycle.md, docs/guides/secret-backed-integration.md, packages/worker/src/mcp/secrets/pending-package-secret-approvals.ts
Guides and pending-approval messages describe adoption, bulk approval URLs, package grants, and post-approval verification.
MCP and host approval instructions
packages/worker/src/mcp/server-instructions.ts, docs/contributing/secret-host-approval.md
Instructions distinguish host, capability, package, mutation, and community-fork approval paths.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant MCPExecutor
  participant AccountSecretsUI
  participant AccountSecretsHandler
  participant SecretStorage
  MCPExecutor->>AccountSecretsUI: provide capability approval URL
  AccountSecretsUI->>AccountSecretsHandler: submit capability approval
  AccountSecretsHandler->>SecretStorage: update allowed capabilities
  SecretStorage-->>AccountSecretsHandler: return refreshed approval data
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 2.86% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main changes: auto-granting user secrets for self-authored packages, fork adoption, and one-click capability approval.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cursor/secret-approval-friction-ff03

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kody-bot
kody-bot marked this pull request as ready for review July 21, 2026 18:48
@github-actions

github-actions Bot commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

🔎 Preview deployed: https://kody-pr-829.kody-a99.workers.dev

Worker: kody-pr-829
D1: kody-pr-829-db
KV: kody-pr-829-oauth-kv

Mocks:

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (1)
packages/worker/src/app/handlers/account-secrets.ts (1)

772-889: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Extract shared logic across package, capability, and host approval branches.

All three branches (plus package_bulk) repeat the same shape: list secrets, find the matching one, 404 if missing, call a setSecretAllowed* function with the deduped array, reload payload, return. Consolidating into a single helper parameterized by the field getter/setter would reduce this ~120 lines of near-duplicate logic and lower the risk of the branches silently diverging as new approval kinds are added (as capability was here).

♻️ Sketch of a shared helper
async function applySingleSecretApprovalUpdate(input: {
	env: Env
	userId: string
	name: string
	scope: SecretScope
	storageContext: StorageContext | null
	update: (secret: SecretMetadata) => Promise<unknown>
}) {
	const current = await listSecrets({
		env: input.env,
		userId: input.userId,
		scope: input.scope,
		storageContext: input.storageContext,
	})
	const secret = current.find(
		(item) => item.name === input.name && item.scope === input.scope,
	)
	if (!secret) return null
	await input.update(secret)
	return secret
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/worker/src/app/handlers/account-secrets.ts` around lines 772 - 889,
Extract the repeated approval-update flow from the package, capability, and host
branches—and the corresponding package_bulk path—into a shared helper near the
approval handler. Parameterize it with the secret identity, environment/storage
context, and an update callback that performs each branch’s existing
deduplicated setter logic; have it return a missing-secret result so callers
preserve the current 404 response, then retain each branch’s payload reload and
response behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/use/secrets-and-values.md`:
- Around line 17-24: Update the later package-approval section to match the
policy described here: user-authored packages may read and use user-scoped
secrets without explicit approval, while community forks require an
allowed_packages grant. State that explicit approval remains required for all
secret mutation paths, including secret_set, secret_delete, and OpenAPI
token-refresh writes.

In `@packages/worker/client/routes/account-secrets.tsx`:
- Around line 376-388: Update the “already added” message condition in the
surrounding account-secrets approval logic to match the capabilityAlreadyAdded
guard: require requestedCapability to be non-null and requestedHost and
requestedPackageId to be null before checking allowedCapabilities. Keep the
existing message and capabilityAlreadyAdded behavior unchanged.

In `@packages/worker/src/mcp/executor.ts`:
- Line 951: Update the capability-denial messaging flow around
extractFirstUrl(message) to branch when no approval URL is available: retain the
one-click approval-link instruction for a non-null URL, and provide manual
account-secrets instructions when it returns null before retrying.

---

Nitpick comments:
In `@packages/worker/src/app/handlers/account-secrets.ts`:
- Around line 772-889: Extract the repeated approval-update flow from the
package, capability, and host branches—and the corresponding package_bulk
path—into a shared helper near the approval handler. Parameterize it with the
secret identity, environment/storage context, and an update callback that
performs each branch’s existing deduplicated setter logic; have it return a
missing-secret result so callers preserve the current 404 response, then retain
each branch’s payload reload and response 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bd89d107-4cc6-45ee-92d5-5bbd1e7f0f04

📥 Commits

Reviewing files that changed from the base of the PR and between ff0ac1f and e0f8d72.

📒 Files selected for processing (32)
  • docs/contributing/architecture/data-storage.md
  • docs/contributing/secret-host-approval.md
  • docs/guides/account-secret-setup.md
  • docs/guides/integration-bootstrap.md
  • docs/guides/package-authoring.md
  • docs/guides/package-lifecycle.md
  • docs/guides/secret-backed-integration.md
  • docs/use/secrets-and-values.md
  • packages/worker/client/routes/account-approval-shared.node.test.ts
  • packages/worker/client/routes/account-approval-shared.ts
  • packages/worker/client/routes/account-secrets.tsx
  • packages/worker/migrations/0073-community-forks-forked-package-index.sql
  • packages/worker/src/app/account-secrets-data.ts
  • packages/worker/src/app/handlers/account-secrets.node.test.ts
  • packages/worker/src/app/handlers/account-secrets.ts
  • packages/worker/src/app/loader-data.ts
  • packages/worker/src/community/community-flow-test-schema.ts
  • packages/worker/src/community/repo.ts
  • packages/worker/src/jobs/service.node.test.ts
  • packages/worker/src/mcp/capabilities/openapi-provider/operation-request.node.test.ts
  • packages/worker/src/mcp/capabilities/openapi-provider/operation-request.ts
  • packages/worker/src/mcp/capabilities/secrets/secret-delete.ts
  • packages/worker/src/mcp/capabilities/secrets/secret-set.ts
  • packages/worker/src/mcp/executor.ts
  • packages/worker/src/mcp/fetch-gateway.node.test.ts
  • packages/worker/src/mcp/secrets/allowed-capabilities.node.test.ts
  • packages/worker/src/mcp/secrets/allowed-capabilities.ts
  • packages/worker/src/mcp/secrets/errors.node.test.ts
  • packages/worker/src/mcp/secrets/errors.ts
  • packages/worker/src/mcp/secrets/package-access.node.test.ts
  • packages/worker/src/mcp/secrets/package-access.ts
  • packages/worker/src/mcp/server-instructions.ts

Comment thread docs/use/secrets-and-values.md Outdated
Comment thread packages/worker/client/routes/account-secrets.tsx
Comment thread packages/worker/src/mcp/executor.ts Outdated
A reviewed fork can be adopted via the new community_fork_adopt
capability: adoption records adopted_at plus a review note on the
community_forks row, preserving provenance while granting the same
read/use auto-grant self-authored packages get. Mutations still
require the explicit allowed_packages grant. Also fixes CodeRabbit
findings: contradictory already-added capability notice and the
capability denial next step without an approval URL.

Co-authored-by: Kent C. Dodds <me+github@kentcdodds.com>
@cursor cursor Bot changed the title Auto-grant user secrets to self-authored packages and one-click capability approval Auto-grant user secrets to self-authored packages, fork adoption, and one-click capability approval Jul 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
packages/worker/src/mcp/capabilities/community/adopt.ts (1)

25-46: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider enforcing package_id/kody_id exclusivity in the schema itself.

The description says "provide exactly one of," but nothing in the Zod schema enforces it — the check only happens in adoptCommunityFork. Adding a .refine()/.superRefine() would surface the constraint at the schema/tool-contract level instead of only via a service-thrown error.

♻️ Optional schema-level refinement
-		inputSchema: z.object({
+		inputSchema: z.object({
 			package_id: z
 				.string()
 				.min(1)
 				.optional()
 				.describe(
 					'Saved package id (UUID). Provide exactly one of package_id or kody_id.',
 				),
 			kody_id: z
 				.string()
 				.min(1)
 				.optional()
 				.describe(
 					'Package kody id in your account. Provide exactly one of package_id or kody_id.',
 				),
 			review_summary: z
 				.string()
 				.min(10)
 				.describe(
 					'What you reviewed in the forked code and why it is trusted enough to treat as your own for user-secret read/use.',
 				),
-		}),
+		}).refine((v) => (v.package_id !== undefined) !== (v.kody_id !== undefined), {
+			message: 'Provide exactly one of `package_id` or `kody_id`.',
+		}),
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/worker/src/mcp/capabilities/community/adopt.ts` around lines 25 -
46, Update the inputSchema for the adopt capability to enforce that exactly one
of package_id or kody_id is provided, using a Zod refine or superRefine at the
object level. Keep the existing field validations and review_summary
requirements unchanged, while preserving adoptCommunityFork’s existing behavior
for valid inputs.
packages/worker/src/community/repo.ts (1)

674-702: 🗄️ Data Integrity & Integration | 🔵 Trivial | 💤 Low value

Consider guarding against re-adoption races.

The UPDATE has no adopted_at IS NULL condition, so two concurrent adopt calls for the same fork (racing past the service-layer if (fork.adoptedAt) return check) would both succeed and overwrite adoption_note/adopted_at. Low likelihood, but a WHERE ... AND adopted_at IS NULL clause combined with checking changes === 0 would make this fully race-safe and let the service distinguish "already adopted concurrently" from "not found."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/worker/src/community/repo.ts` around lines 674 - 702, Update
markCommunityForkAdopted so its UPDATE only matches rows with adopted_at IS
NULL, preserving the existing fork and user predicates. Keep the changes === 0
result handling so concurrent re-adoption or a missing fork returns null without
overwriting existing adoption data.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@packages/worker/src/community/repo.ts`:
- Around line 674-702: Update markCommunityForkAdopted so its UPDATE only
matches rows with adopted_at IS NULL, preserving the existing fork and user
predicates. Keep the changes === 0 result handling so concurrent re-adoption or
a missing fork returns null without overwriting existing adoption data.

In `@packages/worker/src/mcp/capabilities/community/adopt.ts`:
- Around line 25-46: Update the inputSchema for the adopt capability to enforce
that exactly one of package_id or kody_id is provided, using a Zod refine or
superRefine at the object level. Keep the existing field validations and
review_summary requirements unchanged, while preserving adoptCommunityFork’s
existing behavior for valid inputs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: c8bb666a-bbb0-4999-88a7-a52ef7076b52

📥 Commits

Reviewing files that changed from the base of the PR and between e0f8d72 and 087a77e.

📒 Files selected for processing (25)
  • docs/contributing/architecture/data-storage.md
  • docs/guides/account-secret-setup.md
  • docs/guides/integration-bootstrap.md
  • docs/guides/package-authoring.md
  • docs/guides/package-lifecycle.md
  • docs/guides/secret-backed-integration.md
  • docs/use/secrets-and-values.md
  • packages/worker/client/routes/account-secrets.tsx
  • packages/worker/migrations/0074-community-fork-adoption.sql
  • packages/worker/src/community/community-flow-test-schema.ts
  • packages/worker/src/community/community-service.node.test.ts
  • packages/worker/src/community/repo.ts
  • packages/worker/src/community/service.ts
  • packages/worker/src/community/types.ts
  • packages/worker/src/mcp/capabilities/community/adopt.node.test.ts
  • packages/worker/src/mcp/capabilities/community/adopt.ts
  • packages/worker/src/mcp/capabilities/community/domain.ts
  • packages/worker/src/mcp/capabilities/openapi-provider/operation-request.node.test.ts
  • packages/worker/src/mcp/executor.node.test.ts
  • packages/worker/src/mcp/executor.ts
  • packages/worker/src/mcp/fetch-gateway.node.test.ts
  • packages/worker/src/mcp/secrets/package-access.node.test.ts
  • packages/worker/src/mcp/secrets/package-access.ts
  • packages/worker/src/mcp/secrets/pending-package-secret-approvals.ts
  • packages/worker/src/mcp/server-instructions.ts
🚧 Files skipped from review as they are similar to previous changes (13)
  • docs/guides/package-lifecycle.md
  • packages/worker/src/mcp/executor.ts
  • docs/guides/package-authoring.md
  • packages/worker/src/mcp/server-instructions.ts
  • docs/guides/account-secret-setup.md
  • docs/guides/integration-bootstrap.md
  • packages/worker/src/mcp/capabilities/openapi-provider/operation-request.node.test.ts
  • docs/use/secrets-and-values.md
  • packages/worker/src/mcp/fetch-gateway.node.test.ts
  • docs/contributing/architecture/data-storage.md
  • packages/worker/src/mcp/secrets/package-access.ts
  • packages/worker/src/mcp/secrets/package-access.node.test.ts
  • packages/worker/client/routes/account-secrets.tsx

@kody-bot
kody-bot merged commit 4837c43 into main Jul 21, 2026
5 checks passed
@kody-bot
kody-bot deleted the cursor/secret-approval-friction-ff03 branch July 21, 2026 19:26
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.

3 participants