From c7cf957f23f23d0ebc01709b1779093ba0dd6b45 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 6 Feb 2026 20:11:38 +0000 Subject: [PATCH 1/2] bug(core): Fix bug when saving plans. --- packages/core/src/policy/policies/plan.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/policy/policies/plan.toml b/packages/core/src/policy/policies/plan.toml index 74f1777747b..293f5297ece 100644 --- a/packages/core/src/policy/policies/plan.toml +++ b/packages/core/src/policy/policies/plan.toml @@ -83,4 +83,4 @@ toolName = ["write_file", "replace"] decision = "allow" priority = 50 modes = ["plan"] -argsPattern = "\"file_path\":\"[^\"]+/\\.gemini/tmp/[a-f0-9]{64}/plans/[a-zA-Z0-9_-]+\\.md\"" +argsPattern = "\"file_path\":\"[^\"]+/\\.gemini/tmp/[a-zA-Z0-9]+/plans/[a-zA-Z0-9_-]+\\.md\"" From 9207d334de0fc8d98be8edcb89add547d70bae0d Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 6 Feb 2026 20:17:40 +0000 Subject: [PATCH 2/2] address nit --- packages/cli/src/config/policy-engine.integration.test.ts | 3 ++- packages/core/src/policy/policies/plan.toml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/config/policy-engine.integration.test.ts b/packages/cli/src/config/policy-engine.integration.test.ts index 49b603a1267..43c9d391f99 100644 --- a/packages/cli/src/config/policy-engine.integration.test.ts +++ b/packages/cli/src/config/policy-engine.integration.test.ts @@ -338,6 +338,7 @@ describe('Policy Engine Integration Tests', () => { const validPaths = [ '/home/user/.gemini/tmp/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2/plans/my-plan.md', '/home/user/.gemini/tmp/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2/plans/feature_auth.md', + '/home/user/.gemini/tmp/new-temp_dir_123/plans/plan.md', // new style of temp directory ]; for (const file_path of validPaths) { @@ -364,8 +365,8 @@ describe('Policy Engine Integration Tests', () => { '/project/src/file.ts', // Workspace '/home/user/.gemini/tmp/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2/plans/script.js', // Wrong extension '/home/user/.gemini/tmp/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2/plans/../../../etc/passwd.md', // Path traversal - '/home/user/.gemini/tmp/abc123/plans/plan.md', // Invalid hash length '/home/user/.gemini/tmp/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2/plans/subdir/plan.md', // Subdirectory + '/home/user/.gemini/non-tmp/new-temp_dir_123/plans/plan.md', // outside of temp dir ]; for (const file_path of invalidPaths) { diff --git a/packages/core/src/policy/policies/plan.toml b/packages/core/src/policy/policies/plan.toml index 293f5297ece..194680c9683 100644 --- a/packages/core/src/policy/policies/plan.toml +++ b/packages/core/src/policy/policies/plan.toml @@ -83,4 +83,4 @@ toolName = ["write_file", "replace"] decision = "allow" priority = 50 modes = ["plan"] -argsPattern = "\"file_path\":\"[^\"]+/\\.gemini/tmp/[a-zA-Z0-9]+/plans/[a-zA-Z0-9_-]+\\.md\"" +argsPattern = "\"file_path\":\"[^\"]+/\\.gemini/tmp/[a-zA-Z0-9_-]+/plans/[a-zA-Z0-9_-]+\\.md\""