Skip to content

docs: add Cursor Cloud environment setup notes - #444

Draft
rrama wants to merge 8 commits into
mainfrom
cursor/cloud-env-setup-notes-ca2c
Draft

docs: add Cursor Cloud environment setup notes#444
rrama wants to merge 8 commits into
mainfrom
cursor/cloud-env-setup-notes-ca2c

Conversation

@rrama

@rrama rrama commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Description

Adds an AGENTS.md for this repo. It points at the existing guidance (README.md,
CONTRIBUTING.md and .cursorrules) rather than restating it, then records the
Cursor Cloud environment notes an agent needs to build and exercise this Maven/Tycho plugin in a
Linux VM. Documentation only — no plugin code changes.

It covers:

  • Build and test with JDK 17, not the VM's default 21 — with the root cause, not just the symptom.
  • Commands./mvnw package versus the CI ./mvnw clean verify -DtrimStackTrace=false, and
    that -P sign must not be passed because it needs signing certs.
  • -Declipse.p2.mirrors=false, which stops Tycho following p2 mirror redirects out to arbitrary
    university and ISP mirrors that cannot be enumerated in an egress allowlist.
  • Installing the built feature into a real Eclipse — the p2 director command, and the three
    things that bite when you try it.
  • Authentication, which does not come from the environment.
  • How to probe egress, rather than a list of hosts.

Worth a reviewer's attention

The JDK 17 requirement is currently undocumented anywhere in the repo. A developer whose default
java is 21 gets 187 opaque MockitoException: Mockito cannot mock this class … errors across 20+
test classes, with no hint as to why. tests/pom.xml pins Mockito 4.5.1 and pins the inline mock
maker's agent directly at net.bytebuddy:byte-buddy-agent:1.14.1, which predates JDK 21 — so
bumping Mockito alone would not lift it, both coordinates would have to move. Measured 0 errors on
Temurin 17, and reproduced on macOS rather than only in a cloud VM. This PR only writes the
requirement down for agents; making it discoverable for humans (README, or a fail-fast enforcer
rule) or moving to a JDK-21-capable Mockito/ByteBuddy is a separate change.

Three failure modes when launching a real Eclipse, none of which names its cause. The Snyk view
renders through an SWT Browser widget, so without libwebkit2gtk-4.1-0 it dies as
SWTError: No more handles …, surfacing as a ClassCastException on ErrorViewPart. The
4.34 / 2024-12 IDE the plugin targets is served only from archive.eclipse.org and
www.eclipse.org, which are typically blocked — but the current release is reachable from
download.eclipse.org and the 4.34-built plugin runs on it fine, so this is a non-blocker once you
know it. And on a saved cloud environment the pre-baked ~/eclipse-workspace traps you in a
repeating "Enter Password to Unlock the Secure Storage" dialog, because the plugin reads stored
credentials while the master password was never set — which blocks unattended runs completely.

Deliberately no brittle specifics. No reachable/blocked host list: the egress allowlist changes
between runs, so a fixed map goes stale and gets trusted anyway. Readers are told to probe directly,
and to expect a block to surface as an opaque "Connection reset" during target-platform resolution
rather than as a DNS failure. Likewise no "passes N tests" figure, since that rots as the suite
changes and leaves a reader unable to tell a real problem from a stale doc. The 187-errors-on-21
measurement above is kept, because it is evidence for a diagnosis against named JDK versions rather
than something a reader is expected to match.

Two duplicate cloud-setup PRs had been opened against this repo by successive cloud runs. This one
carries the consolidated content and #443 has been closed as superseded, leaving a single PR per
repo.

Checklist

  • Read and understood the Code of Conduct and Contributing Guidelines.
  • Tests added and all succeed — n/a, no code changes; markdown only
  • Linted — n/a, no Java touched
  • CHANGELOG.md updated — n/a, no user-facing change (contributor/agent documentation)
  • README.md updated, if user-facing — n/a, not user-facing

Screenshots / GIFs

n/a — documentation only.

@snyk-io

snyk-io Bot commented Jul 28, 2026

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues
Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

Consolidates the duplicate cloud-setup notes into a single AGENTS.md, folding in
the useful detail from the parallel branch: the JavaSE-17 target-platform
rationale, the `./mvnw package` vs `clean verify` split, the headless-Tycho note
and the `-P sign` warning.

Adds the verified root cause of the JDK 21 test failures (Mockito 4.5.1 with an
explicitly pinned byte-buddy-agent 1.14.1) and the `-Declipse.p2.mirrors=false`
flag, which avoids p2 mirror redirects to hosts that cannot be allowlisted.

Replaces the fixed reachable/blocked host list with guidance to probe egress
directly, since the allowlist changes between runs.

Co-authored-by: Cursor <[email protected]>
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

rrama and others added 6 commits July 30, 2026 13:42
Records what it takes to install the built feature into a real Eclipse, which
building and unit tests do not cover: the matching 4.34/2024-12 IDE is served only
from archive.eclipse.org and www.eclipse.org, which are typically blocked, but the
current release is reachable from download.eclipse.org and the 4.34-built plugin
runs on it. Includes the p2 director command.

Documents that the Snyk view renders through an SWT Browser widget and needs
libwebkit2gtk-4.1-0, without which it fails as an opaque ErrorViewPart
ClassCastException, plus the -data workspace lock caveat.

Documents the authentication gotchas: the token comes from the plugin's own
preferences 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.

Co-authored-by: Cursor <[email protected]>
A saved cloud environment carries a pre-baked ~/eclipse-workspace, and launching
against it produces repeated "Enter Password to Unlock the Secure Storage" dialogs:
the plugin reads stored credentials while Eclipse's master password was never set.
It presents as a plugin fault, and it blocks unattended GUI runs completely.

Records the two ways out — dismiss or set a password once when interactive, or use
a fresh -data workspace / clear ~/.eclipse/org.eclipse.equinox.security when
unattended.

Reported by a later cloud run than the one this branch was opened from, so it was
missing from the notes this PR already carries.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
"passes 400 tests" is an expectation that rots: the number changes whenever the
suite does, and a reader who sees a different count cannot tell whether they have
found a real problem or a stale doc. What matters is that the run is clean.

The 187-errors-on-JDK-21 figure above is left alone — that is a recorded measurement
against named JDK versions, evidence for the diagnosis rather than something a reader
is expected to match.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Both archive.eclipse.org and www.eclipse.org were added to the Cursor Cloud egress
allowlist on 2026-08-07, so the 4.34/2024-12 IDE the plugin targets can be fetched
directly rather than substituting the current release. "Typically blocked" is no
longer true and was sending readers to the workaround first.

archive.eclipse.org did return a single TLS reset on one run and then served the
download on retry, so the note asks for one retry before treating it as blocked. The
download.eclipse.org fallback stays, since it does work.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
The language server skips paths it does not trust and surfaces nothing in the Snyk
view, so it presents as a hung scan. Meanwhile the CLI scans the same project in
seconds, because it has no trust gate — which makes the plugin look broken.

Three Cursor Cloud runs concluded this was a plugin or LS defect and stopped
investigating; the Eclipse log had "skipping scan of untrusted path path=…" in it
the whole time. Records the tell, and that trust has to go through the plugin: the
view's Trust folder affordance, or the trusted-folders list on the Setup tab of Snyk
preferences, which sits near the bottom and can be invisible until the window is
enlarged. Writing trustedFolders into the LS config file by hand does not work.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Two claims here were stronger than the evidence.

"Almost always an untrusted folder" was built from a single run's log line. An
unanswered Secure Storage prompt produces the same symptom, and a real defect has not
been ruled out — the section now describes how to tell them apart and says that a log
showing neither is a genuine bug report. It also stops asserting a cause that will be
wrong the moment the underlying issue is fixed.

"The allowlist changes between runs" is not true: it changes when someone asks an
admin, not on its own. The reason not to hardcode a host list is that such a request
silently invalidates whatever was written down, which is the point now made.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
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