A trial workspace asks for repository access, package downloads, and perhaps a deployment token. Starting with real credentials turns evaluation into an incident-response exercise. Start instead with one invariant: nothing in the workspace can authorize a production action.
This is a proposed security fixture, not a report of a tested MonkeyCode control. Create a disposable repository containing harmless code and a canary-shaped value that has no authority. A hit tells you where data traveled; it must never unlock anything.
Write the capability manifest first
# trial-capabilities.yaml (unexecuted template)
workspace_ttl_minutes: 45
repository: disposable-canary
identity: trial-only
secrets:
production: forbidden
canary_id: mc-trial-20260727-a
network:
allow_dns: [package-host.example.invalid]
deny_cidrs: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]
filesystem:
writable: ["/workspace", "/tmp"]
checks: [build, unit-test, preview]
The fake hostname is deliberately nonfunctional. Replace it only with destinations your trial actually needs, then enforce the list outside the agent process. Do not put a cloud key into an environment variable and call it “scoped” unless its policy and expiry have been independently verified.
Add a canary string to a file excluded from normal output. Monitor your own controlled sink for that identifier, but do not make unsolicited requests to third-party systems. The useful assertion is both positive and negative: approved package traffic works; private-address, metadata-service, and arbitrary-host requests fail and leave evidence.
# Unexecuted assertions; adapt to the environment's approved test harness.
printf '%s\n' 'CANARY=mc-trial-20260727-a' > .trial-canary
# expected: build and local unit test succeed
# expected: request to an approved fixture succeeds
# expected: requests to 169.254.169.254 and private CIDRs are denied
sha256sum trial-capabilities.yaml > capability.sha256
| Path | Success evidence | Failure evidence | Response |
|---|---|---|---|
| build | exit 0, expected artifact hash | dependency or permission error | stop; do not broaden access |
| egress allow | fixture request ID | no route despite declared need | revise manifest explicitly |
| egress deny | policy rejection with timestamp | response bytes or silent timeout | destroy workspace; investigate |
| canary | no external observation | controlled sink records ID | preserve logs; rotate trial identity |
Teardown is part of the test
Record workspace ID, creation time, capability hash, repository commit, observed destinations, terminal check states, and deletion request ID. Then revoke the trial identity, delete preview and workspace, remove the disposable repository, and query for remaining resources after a cooling interval. Success means deletion is confirmed and the canary has no subsequent observation. Failure means an orphan, live preview, reusable credential, or unexplained egress remains; preserve evidence and do not start a second workspace.
The manifest is a statement of intended authority, not proof of sandbox isolation. DNS rebinding, redirects, package scripts, platform control-plane access, and provider logging need separate tests. A canary is detection, not prevention, and a synthetic credential must never resemble or share policy with production.
Product boundary and trial route
Only after the authority boundary is written does MonkeyCode become relevant. Current official material labels its overseas hosted option “Free to start” and describes integrated models plus managed server-side cloud development environments for build, test, and preview. It does not establish that every model or server is free. Exact availability, quotas, regions, duration, future pricing, and terms can change; verify the current console.
The campaign entry for a deliberately disposable security trial is https://ly.cyberserval.tech/iIETXiF
Exit by hashing the evidence, revoking the synthetic identity, deleting preview and workspace, and reconciling inventory. Any ambiguous egress or surviving resource is a failed trial, not permission to continue.
Disclosure: This article promotes MonkeyCode using an official campaign link. I’m a MonkeyCode user, not affiliated with the project, and I receive no commission from this link.
AI assistance disclosure: This article was drafted with AI assistance and reviewed against the cited project materials.
Top comments (0)