diff --git a/.changeset/jetbrains-shell-env-path.md b/.changeset/jetbrains-shell-env-path.md new file mode 100644 index 00000000000..8af2da43207 --- /dev/null +++ b/.changeset/jetbrains-shell-env-path.md @@ -0,0 +1,5 @@ +--- +"@kilocode/kilo-jetbrains": patch +--- + +Fix the JetBrains plugin finding shell-installed tools like bun and gh when launched from Finder or Dock. diff --git a/packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/cli/KiloBackendCliManager.kt b/packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/cli/KiloBackendCliManager.kt index fe8dcb992cc..301142da9f7 100644 --- a/packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/cli/KiloBackendCliManager.kt +++ b/packages/kilo-jetbrains/backend/src/main/kotlin/ai/kilocode/backend/cli/KiloBackendCliManager.kt @@ -5,6 +5,7 @@ import ai.kilocode.backend.dev.KiloDevMode import ai.kilocode.log.KiloLog import com.intellij.openapi.application.ApplicationInfo import com.intellij.openapi.application.PathManager +import com.intellij.util.EnvironmentUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import kotlinx.coroutines.withTimeout @@ -91,7 +92,7 @@ class KiloBackendCliManager( } // Must be called from a background thread — devStorageEnv() performs blocking I/O (mkdirs). - internal fun buildEnv(pwd: String, base: Map = System.getenv()): Map = + internal fun buildEnv(pwd: String, base: Map = EnvironmentUtil.getEnvironmentMap()): Map = buildKiloCliEnv(pwd, base, log) private suspend fun spawn(cli: File): CliServer.State = @@ -238,7 +239,7 @@ private const val DEFAULT_CONFIG = """{"permission":{"edit":"ask","bash":"ask"}} // Must be called from a background thread — devStorageEnv() performs blocking I/O (mkdirs). internal fun buildKiloCliEnv( pwd: String, - base: Map = System.getenv(), + base: Map = EnvironmentUtil.getEnvironmentMap(), log: KiloLog = KiloLog.create(KiloBackendCliManager::class.java), ): Map = buildMap { putAll(base) diff --git a/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliManagerEnvTest.kt b/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliManagerEnvTest.kt index 339dc9542d0..9024ce35614 100644 --- a/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliManagerEnvTest.kt +++ b/packages/kilo-jetbrains/backend/src/test/kotlin/ai/kilocode/backend/cli/KiloBackendCliManagerEnvTest.kt @@ -79,6 +79,15 @@ class KiloBackendCliManagerEnvTest { assertEquals(cfg, env["KILO_CONFIG_CONTENT"]) } + @Test + fun `isolation disabled - base PATH is preserved`() { + val path = "/opt/homebrew/bin:/usr/bin" + + val env = manager.buildEnv("pwd123", mapOf("PATH" to path)) + + assertEquals(path, env["PATH"]) + } + @Test fun `isolation disabled - no XDG storage overrides are injected`() { val env = manager.buildEnv("pwd123", emptyMap())