Repository navigation
Description
Is there an existing issue for this?
- I have searched the existing issues (user.home and GRADLE_USER_HOME; no matching issue).
Which actions are affected?
Commits, Pull Request, Issue (configured Java/Gradle verification and native branch synchronization)
Which platforms are affected?
macOS reproduced. Linux needs an upstream regression; the inspected POSIX environment builder is shared.
Description
The credential-free verification profile changes HOME but does not redirect the JVM user.home property or derive GRADLE_USER_HOME. Standard Java 17 on this Mac continues to report the operating-system account home. With a closed environment matching the documented runtime contract, GeckoCV's configured Gradle command consequently reused account-level Gradle state and loaded a global init script, despite HOME pointing at a fresh private profile.
At f5e5a4c, src/infrastructure/untrusted_command_environment.ts creates a private HOME and filters inherited GRADLE_USER_HOME/JAVA_TOOL_OPTIONS; it does not derive a safe Gradle home or JVM home. The native setup result forwards only PATH and JAVA_HOME. Therefore a repository composite cannot export a reviewed private Gradle home through the documented setup result either.
Please address this in Copilot's runtime/isolation contract and add actual JVM/Gradle regressions. A closed environment should not silently reuse standard tool-level account configuration, initialization scripts or potential credential properties when a private verification profile is claimed. This is a normal tool-discovery gap, not a request for an OS sandbox or an assertion that credentials were exposed. No secrets or account configuration contents were inspected or published.
Reproducing the issue
- Select a normal Java 17 installation on macOS and create an empty temporary HOME.
- Run java -XshowSettings:properties -version with an environment containing only that HOME and a minimal PATH (use the absolute Java executable). Parse user.home privately; publish only comparisons.
- Observed: user.home equals the OS account home, and does not equal the private HOME.
- In GeckoCV at base b461b78c035928856862b995d9008a64b3d59848 plus issue Develop branch aligned with masterΒ #38's setup work, execute the configured command with private HOME, PATH, JAVA_HOME, temporary directory and locale, without inherited GRADLE_USER_HOME or tool options:
./backend/gradlew -p backend detekt test jacocoTestReport :code-coverage-report:testCodeCoverageReport --no-daemon
- Observed: success in about 9 seconds with all 438 tasks up to date, plus a global initialization-script message. This run proves Java is available, but does not prove a private Gradle profile or freshly executed tests.
An upstream regression can use a disposable OS-account fixture with a harmless global init-script/gradle.properties sentinel; do not read real user credentials. Test actual Java/Gradle execution in the isolated/native environment, private cache/config discovery, unchanged candidate source and continued exclusion of inherited tool-option injection. Any new forwarded runtime state must be derived or ownership-validated, not copied from arbitrary caller settings.
copilot Version
v3 inspected at f5e5a4c (3.10.6 generation). Consumer: https://github.com/vypdev/geckocv/issues/38.
Relevant Log Output
HOME is private: true
JVM user.home equals private HOME: false
JVM user.home equals operating-system account home: true
Gradle emitted a global init-script message; no path/content copied.
BUILD SUCCESSFUL; 438 actionable tasks: 438 up-to-date
Additional context and comments
Consumer native setup has not been activated; this is a local real-runtime reproduction plus inspection of the current upstream environment builder, not a claimed completed GitHub native continuation. Linux native evidence remains pending. We are preparing the supported setup without dropping verification commands, widening credentials, rewriting the Gradle wrapper or disguising shared-cache reuse as fresh isolation evidence. Please keep this separate from progress-assessment issue #774 and large-comparison issue #773.
Gradle documents that user home stores global properties and init scripts, including possible repository credentials: https://docs.gradle.org/current/userguide/directory_layout.html and https://docs.gradle.org/current/userguide/init_scripts.html.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
[-]Private verification HOME does not redirect JVM/Gradle account-level configuration[/-][+]π - Private verification HOME does not redirect JVMGradle account level configuration[/+]vypbot commentedon Oct 28, 2026
Hi! Iβm @vypbot, the Copilot assistant for this repository.
I can answer questions, explain the codebase, propose implementation and test plans, review issues and pull requests for potential bugs or security problems, and help authorized maintainers apply changes.
Try
/copilot helpto see the available commands, or mention @vypbot with your question.[-]π - Private verification HOME does not redirect JVMGradle account level configuration[/-][+]ππ§βπ» - Private verification HOME does not redirect JVMGradle account level configuration[/+]12 remaining items