docs: add Cursor Cloud specific instructions - #882
Draft
rrama wants to merge 3 commits into
Draft
Conversation
Co-authored-by: Ben Durrans <Benjamin.Durrans@snyk.io>
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
Contributor
Code Coverage
|
Corrects the main stale claim: this repo is no longer blocked in the cloud VM. buildPlugin and the full test suite (~626 tests, JDK 21) both pass once plugin resolution can reach its hosts, so the earlier 'unbuildable' note should not be used as a reason to skip it. Adds three findings that reduce the allowlist surface: cache-redirector .jetbrains.com proxies both the Gradle Plugin Portal m2 and Maven Central, the oss.sonatype.org entry is vestigial because all seven plugins are pinned to Plugin Portal releases, and repo1.maven.org is not required. Documents that runIde is usable where the VM provides a display, since building and unit-testing do not prove the plugin works inside a running IDE, and records the authentication gotchas: the token comes from the plugin's own settings rather than SNYK_TOKEN or the CLI configstore, OAuth2 times out so the API-token method is required, and the plugin applies its own folder-trust gate. Notes that verifyPlugin and test are pre-push hooks whose cold run can outlast the SSH connection, and replaces the fixed reachable/blocked host list with guidance to probe egress directly. Co-authored-by: Cursor <cursoragent@cursor.com>
A warm VM can report `test` as UP-TO-DATE and succeed in seconds having executed nothing, which a setup run read as a green suite. Also correct the egress note: the allowlist changes only when someone asks the admins, so the reason not to trust a written host list is document drift, not churn.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds a
## Cursor Cloud specific instructionssection toAGENT.md, recording what anagent needs to know to build and test this plugin in a Cursor Cloud Linux VM.
Documentation only — no plugin code changes.
This is the only cloud-setup PR against this repo, so there was no duplicate to close.
Instead this revision corrects the stale claims in the original notes.
The notes cover:
master, notmain.gradle)../gradlew buildPluginand./gradlew testboth pass — roughly 626 tests in about5 minutes, green, with no extra flags.
flakiness rather than a permissions problem.
runIdeneeds a display;verifyPlugindoes not, but is expensive (see below).What changed since the first revision
described plugin resolution failing at the TLS layer as the current state. It builds and
tests cleanly once
oss.sonatype.organdplugins-artifacts.gradle.orgare reachable,so the section now says so explicitly and warns against using the old "unbuildable" note
as a reason to skip the repo.
entries:
cache-redirector.jetbrains.comproxies both the Gradle Plugin Portal m2 and MavenCentral, so routing through it avoids
plugins-artifacts.gradle.orgentirely.oss.sonatype.orgentry insettings.gradle.ktsis effectively vestigial — allseven plugins (
changelog,intellij.platform,kotlin.jvm,kover,spotless,ktlint,axion-release) are pinned to Plugin Portal releases, and the onlySNAPSHOTin the build is the project's own axion-release version.repo1.maven.orgis commonly blocked and is not required; Central resolves viarepo.maven.apache.org.runIde/verifyPluginclaim. The first revisionlumped them together as needing a display and therefore out of scope.
verifyPluginruns headless; its real cost is thatpluginVerificationinbuild.gradle.ktstargets four full IDE distributions (IC 2025.2 plus IU 2025.3,2026.1 and 2026.2), so a cold run pulls roughly a gigabyte. Verified here: a cold
./gradlew verifyPlugin testtook 9m57s and downloaded 946 MB.runIdeis usable — cloud VMs here have run XFCE onDISPLAY=:1, and drivingthe sandbox IDE is the strongest available proof, since building and unit-testing do
not show the plugin works inside a running IDE. The section now covers the sandbox
launch and the Settings › Tools › Snyk configuration.
verifyPluginandtestare pre-push hooks. A cold run outlastsGitHub's SSH idle timeout and the push dies with
Connection to github.com closed by remote host, which reads like a network fault rather than a slow hook. Running bothbefore pushing avoids it.
settings, so neither
SNYK_TOKENnor the CLI's~/.config/configstoreauthenticatesit —
snyk authin a terminal does nothing — the API-token method is required becausethe OAuth2 browser flow times out, and the plugin's folder-trust gate is separate from
the IDE's workspace trust.
between runs, so a fixed map goes stale and gets trusted anyway. Readers are told to
probe directly, with the semantics that actually bite: bare entries are apex-exact while
*.example.comcovers subdomains only.Checklist
was run in the cloud VM to verify the claim in the notes (~626 tests, green).
spotless/ktlintpre-commit hook passedScreenshots / GIFs
n/a — documentation only.