Skip to content

πŸ›πŸ§‘β€πŸ’» - Private verification HOME does not redirect JVMGradle account level configurationΒ #775

Closed

Description

@efraespada

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

  1. Select a normal Java 17 installation on macOS and create an empty temporary HOME.
  2. 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.
  3. Observed: user.home equals the OS account home, and does not equal the private HOME.
  4. 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

  1. 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.

Activity

  1. added
    bugSomething isn't working
    bugfixSomething isn't working
    priority: highCritical issue, needs immediate attention.
    on Oct 28, 2026
  2. added theissue type on Oct 28, 2026
  3. moved this to Todo in vypdevon Oct 28, 2026
  4. changed the title [-]Private verification HOME does not redirect JVM/Gradle account-level configuration[/-] [+]πŸ› - Private verification HOME does not redirect JVMGradle account level configuration[/+] on Oct 28, 2026
  5. vypbot commented on Oct 28, 2026

    @vypbot
    Contributor

    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 help to see the available commands, or mention @vypbot with your question.

  6. moved this from Todo to In Progress in vypdevon Oct 29, 2026
  7. added
    branchedIndicates that a branch has been created for this issue.
    on Oct 29, 2026
  8. changed the title [-]πŸ› - Private verification HOME does not redirect JVMGradle account level configuration[/-] [+]πŸ›πŸ§‘β€πŸ’» - Private verification HOME does not redirect JVMGradle account level configuration[/+] on Oct 29, 2026
  9. 12 remaining items

  10. removed
    70%Progress: 70%
    in-progressStart work on an admitted issue.
    on Oct 29, 2026
  11. moved this from In Progress to Done in vypdevon Oct 29, 2026
  12. added
    100%Progress: 100%
    and removed
    state:workingWork can proceed on the verified branch or without a branch.
    on Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

100%Progress: 100%branchedIndicates that a branch has been created for this issue.bugSomething isn't workingbugfixSomething isn't workingpriority: highCritical issue, needs immediate attention.size: XXLIndicates an extremely large task or issue that requires significant time and effort to complete.

Type

Projects

  • Status
    Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions