
Security News
Insecure Agents Podcast: How to Keep AI Agents From Bypassing Security Controls
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.
@forestrie/canopy-e2e-kit
Advanced tools
Reusable Playwright e2e helpers for canopy system tests (ARC-0024 Layer 1)
Reusable Playwright helpers extracted from @canopy/api-e2e for cross-repo
system tests (ARC-0024).
| Suite | Scope | Univocity | CI entry |
|---|---|---|---|
| bootstrap | canopy's own genesis → grants → first entry | Ephemeral, provisioned per run (deploy provision e2e) | canopy tests-system.yml |
| lane | Cross-repo lane integration | Per-run deploy from the lane manifest's release pin | forestrie/system-testing |
Suites are named for what they exercise; the promotion phase that runs them
(pr, main, qualify, promote, nightly) is the other axis. The numbered
T0–T4 tiers are retired — one token could not carry both, so "T3" meant the lane
suite and the qualification gate interchangeably (FOR-531).
Both suites provision their own instances. There is no pinned-contract mode in
canopy: a supplied address set *_ALLOW_BOOTSTRAP=false, which skipped every
bootstrap spec.
Cross-repo lane specs (forest genesis, Mode B/C registration, BYOK) run in
forestrie/system-testing — not tests-system.yml.
hasCoordinatorApiE2eEnv, assertCoordinatorApiE2eEnv)mintOnboardTokenE2e)pollQueryRegistrationUntilReceiptRedirect, pollResolveReceiptUntil200, sequencingBackoff)univocityProvisionSkipReason, fetchOnChainBootstrapConfig, bootstrap contract helpers)ensureForestGenesisEs256E2e, ensureForestGenesisKs256E2e, genesisBodyEs256)E2E_BOOTSTRAP_VARIANTS, describeForEachBootstrapVariant)mintBootstrapGrant, signChildGrantUnderRoot, ES256 PEM + KS256 wallet signers)completeGrantRegistrationThroughReceipt, completeBootstrapGrantWithReceipt, buildCompletedGrantBase64)setupBootstrapCoordinatorDelegation, pollBootstrapRegistrationThroughReceipt)assertBootstrapMintE2eEnv, assertBootstrapReceiptE2eEnv, assertSystemE2eEnv)Grant, transparent-statement header labels) and COSE encoding vendored under src/wire/ and src/encoding/startModeCWebhookIngress, pollModeCWebhookSealThroughReceipt, modeCWebhookSealSkipReason)exchangeWalletChallengeSessionE2e)custodianApiV1BaseUrl, postCustodianApiSignPayload, custody grant builders)postEntriesExpectAccepted, etc.)mode-c-webhook-receiver (in-process webhook receiver for coordinator e2e)@forestrie/receipt-verify
(plan-0030, FOR-286):
verifyGrantReceiptOffline, parseReceipt, decodeTrustRootFromGenesis,
plus types VerifyGrantReceiptOfflineInput, ReceiptVerifyResult, ReceiptVerifyStage@forestrie/grant-builder / @forestrie/scrapi-client, which
exist only on npmjs, so a GitHub Packages release would be uninstallable
for consumers whose @forestrie scope maps to GitHub Packages@forestrie/receipt-verify 0.3.0 (canonical Grant from
@forestrie/grant-builder, FOR-353)Published to public npmjs.org (0.5.0+; 0.4.x and earlier were on GitHub Packages) — no registry auth needed:
pnpm add -D @forestrie/canopy-e2e-kit
Workspace consumers: "@forestrie/canopy-e2e-kit": "workspace:*".
Peer dependencies: @playwright/test, viem (wallet challenge session).
pnpm --filter @forestrie/canopy-e2e-kit build
pnpm --filter @forestrie/canopy-e2e-kit test
Publish tag (npmjs, trusted publishing / OIDC): canopy-e2e-kit-v*.
Workflow: .github/workflows/publish-canopy-e2e-kit.yml (mirrors
publish-delegation-cose.yml).
Published dependencies (all npmjs): @forestrie/delegation-cose,
@forestrie/encoding, @forestrie/grant-builder, @forestrie/scrapi-client
and @forestrie/receipt-verify — workspace:*/workspace:^ in monorepo,
rewritten to concrete versions on pack.
Kit vendors a minimal subset of @forestrie/encoding and grant wire types under
src/encoding/ and src/wire/. When changing canopy-api grant or COSE paths,
update the kit copy in the same PR and bump the kit semver slice.
| Kit path | Canonical source |
|---|---|
src/encoding/* | packages/shared/encoding/src/ |
src/wire/grant/* | packages/apps/canopy-api/src/grant/ |
src/wire/forest/* | packages/apps/canopy-api/src/forest/ |
src/wire/cose/* | packages/apps/canopy-api/src/cose/ |
Drift guard: test/merge-cose-sign1-unprotected.test.ts mirrors
@forestrie/encoding golden vectors for mergeUnprotectedIntoCoseSign1.
Manifest placeholder: KS256_UNIVOCITY_MANIFEST_PLACEHOLDER in
system-test-manifest-constants.ts — keep aligned with
system-testing/manifests/lane-a.example.yaml.
Moved helpers live in this package; packages/tests/canopy-api/tests/utils/*.ts
files re-export from @forestrie/canopy-e2e-kit so Playwright specs keep
@e2e-utils/* import paths unchanged.
FAQs
Reusable Playwright e2e helpers for canopy system tests (ARC-0024 Layer 1)
The npm package @forestrie/canopy-e2e-kit receives a total of 81 weekly downloads. As such, @forestrie/canopy-e2e-kit popularity was classified as not popular.
We found that @forestrie/canopy-e2e-kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.

Security News
GPT-6 Astra tried to plant malicious code in simulated open source projects using fake GitHub accounts and deceptive PRs during an assigned CTF challenge.

Security News
upm uses Node.js to deliver fast npm installs in about 250 KB, with a JavaScript API and security defaults.