diff --git a/CHANGELOG.md b/CHANGELOG.md index 83d757b8..55081786 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +- Installer now auto-adds permission for `make_new_job.sh` script, allowing Claude to run job creation without manual configuration ### Changed diff --git a/src/deepwork/core/adapters.py b/src/deepwork/core/adapters.py index a6354770..db859ebb 100644 --- a/src/deepwork/core/adapters.py +++ b/src/deepwork/core/adapters.py @@ -469,7 +469,11 @@ def sync_permissions(self, project_path: Path) -> int: "Write(./.deepwork/**)", # All deepwork CLI commands "Bash(deepwork:*)", + # Job scripts that need to be executable + "Bash(./.deepwork/jobs/deepwork_jobs/make_new_job.sh:*)", ] + # NOTE: When modifying required_permissions, update the test assertion in + # tests/unit/test_adapters.py::TestClaudeAdapter::test_sync_permissions_idempotent # Load settings once, add all permissions, then save once settings = self._load_settings(project_path) diff --git a/tests/unit/test_adapters.py b/tests/unit/test_adapters.py index 36d00287..de22f217 100644 --- a/tests/unit/test_adapters.py +++ b/tests/unit/test_adapters.py @@ -194,7 +194,9 @@ def test_sync_permissions_creates_settings_file(self, temp_dir: Path) -> None: count = adapter.sync_permissions(temp_dir) - assert count == 4 # Read, Edit, Write for .deepwork/** + Bash for deepwork CLI + assert ( + count == 5 + ) # Read, Edit, Write for .deepwork/** + Bash for deepwork CLI + Bash for make_new_job.sh settings_file = temp_dir / ".claude" / "settings.json" assert settings_file.exists() settings = json.loads(settings_file.read_text()) @@ -226,7 +228,9 @@ def test_sync_permissions_idempotent(self, temp_dir: Path) -> None: # First call adds permissions count1 = adapter.sync_permissions(temp_dir) - assert count1 == 4 + assert ( + count1 == 5 + ) # Read, Edit, Write for .deepwork/** + Bash for deepwork CLI + Bash for make_new_job.sh # Second call should add nothing count2 = adapter.sync_permissions(temp_dir)