* fix(gh-cli): use get_gh_executable() and pass GITHUB_CLI_PATH from GUI
Frontend changes:
- Add GITHUB_CLI_PATH environment variable detection in agent-process.ts
- Follow the existing CLAUDE_CLI_PATH pattern for gh CLI path passing
- Resolves issue where GUI (from Finder/Dock) doesn't have gh in PATH
Backend changes:
- gh_client.py: Use get_gh_executable() instead of hardcoded "gh"
- bot_detection.py: Use get_gh_executable() in _get_bot_username()
- runner.py: Use get_gh_executable() instead of shutil.which() duplication
This fix ensures gh CLI is found when the Electron app is launched from
Finder/Dock on macOS, or from non-terminal environments on Windows/Linux,
where the subprocess PATH doesn't include Homebrew or other custom install
locations.
The get_gh_executable() function already handles:
- GITHUB_CLI_PATH env var (now set by frontend)
- shutil.which("gh") fallback
- Platform-specific paths (Homebrew, Program Files)
- Windows 'where' command
Resolves: ACS-321
* tests: add comprehensive tests for gh CLI path detection (ACS-321)
Backend tests:
- Add tests/test_gh_executable.py with 28 tests covering:
- gh executable verification with --version check
- cache invalidation functionality
- Windows 'where' command fallback
- cross-platform path detection (Homebrew, Program Files)
- run_gh() command execution wrapper
- Add tests for gh_cli_path detection in:
- apps/backend/runners/github/test_gh_client.py (3 new tests)
- apps/backend/runners/github/test_bot_detection.py (6 new tests)
Frontend tests:
- Add tests for GITHUB_CLI_PATH env var in:
- apps/frontend/src/main/agent/agent-process.test.ts (6 new tests)
- Fix flaky subprocess-spawn.test.ts timeout issue by increasing timeout
to 10 seconds for the spec creation test
- Fix TypeScript type errors in test mocks to match ToolDetectionResult type
All 43 new tests pass:
- 28/28 tests in test_gh_executable.py
- 3/3 new tests in test_gh_client.py
- 6/6 new tests in test_bot_detection.py
- 6/6 new tests in agent-process.test.ts
Resolves: ACS-321 test coverage
* fix(tests): improve test assertions and remove invalid noqa comment
- Remove invalid noqa: PY291 (not a valid ruff rule for CodeQL)
- Remove unused result variables
- Properly patch get_gh_executable in test_run_with_github_cli_path_env_var
- Add assertion to verify env var path was actually used
* fix(tests): fix CodeQL and test assertion issues
- Fix HIGH: Test assertion bug in test_bot_detection.py line 455 - was comparing list to string
- Fix MEDIUM: Add GITHUB_CLI_PATH verification in test_get_bot_username_uses_github_cli_path_env_var
- Fix MEDIUM: Remove tautological test_run_with_github_cli_path_env_var from test_gh_client.py
- test_gh_executable.py already has proper env var precedence tests
* fix(tests): emit exit synchronously to fix Windows CI timeouts
- Change from setImmediate to synchronous mockProcess.emit('exit', 0)
- This ensures the exit event fires before the await, preventing timeouts
- setImmediate was too slow on Windows CI, causing test failures
* style(tests): remove unused AsyncMock import
* refactor(agent): extract detectAndSetCliPath helper to reduce duplication
- Extracts common CLI path detection pattern into detectAndSetCliPath()
- Reduces code duplication between CLAUDE_CLI_PATH and GITHUB_CLI_PATH detection
- Both now use the same helper function with tool name and env var parameters
- Improves maintainability - future CLI tools can reuse this pattern
Suggested by code review (LOW priority).
* test(tests): improve test clarity and add subprocess call verification
- Rename test_get_bot_username_uses_github_cli_path_env_var to
test_get_bot_username_uses_get_gh_executable_return_value for clarity
- Remove redundant GH_TOKEN monkeypatch (BotDetector sets it from bot_token)
- Add assertion for full command args including ['api', 'user']
- Add subprocess.run assertion to test_get_bot_username_without_token
to verify no gh CLI invocation occurs when no token is provided
Suggested by code review.
* fix(tests): fix "should track running tasks" test timing
The test was failing because it emitted exit events before the spawn
async operations had completed and registered exit listeners. Using
vi.waitFor() ensures tasks are tracked before emitting exit.
* fix(tests): address code review feedback and Windows CI timeout
- [NEW-001] Add MOCK_GH_PATH constant in TestGhExecutableDetection class
to avoid hardcoded Unix-style paths in test_bot_detection.py
- [NEW-002] Improve error message serialization in agent-process.ts
detectAndSetCliPath() to properly extract error.message from Error objects
- Fix Windows CI timeout: Increase test timeouts from 10000ms to 15000ms
for spec creation, task execution, and QA process tests
* docs: add note about pre-existing test failures
Add comment to clarify that some pre-existing test failures in the
full test suite (e.g., @testing-library/react v16 exports) are not
related to changes in this test file.
* fix(tests): ensure exit listeners are attached before emitting exit
Use setImmediate to wait for spawn to complete before emitting exit events.
This prevents flaky timeouts where exit fires before listeners are registered.
Addresses feedback about emitting exit before spawn listeners are attached.
* fix(tests): rename test to reflect actual behavior
The test 'should kill existing process when starting new one for same task'
was incorrectly named - the agent doesn't implement kill behavior for
duplicate tasks. Renamed to 'should allow sequential execution of same task'
to accurately reflect what the code actually does.
Kill behavior is out of scope for this bug fix (ACS-321).
* refactor(agent-process): make detectAndSetCliPath type-safe
- Add CliTool type and CLI_TOOL_ENV_MAP mapping at module level
- Remove envVarName parameter - now looked up via mapping
- Prevents mismatched toolName and envVarName pairs
- Fixes esbuild compatibility issue with private type syntax
* refactor(tests): use temp directory paths instead of hardcoded Unix paths
Replace MOCK_GH_PATH constant with platform-agnostic temp_state_dir / 'gh'
paths in TestGhExecutableDetection class. This follows cross-platform
guidelines by avoiding hardcoded Unix-style paths in tests.
* refactor(tests): address coderabbitai feedback
- test_bot_detection.py: Remove redundant monkeypatch.setenv() call in
test_get_bot_username_uses_get_gh_executable_return_value since get_gh_executable
is explicitly mocked to return mock_gh_path
- subprocess-spawn.test.ts: Keep original should kill all running tasks test
that matches actual behavior (killAll removes tasks from tracking but doesn't
call kill on already-exited mock processes)
---------
Co-authored-by: StillKnotKnown <stillknotknown@users.noreply.github.com>
Co-authored-by: Andy <119136210+AndyMik90@users.noreply.github.com>
Auto Claude
Autonomous multi-agent coding framework that plans, builds, and validates software for you.
Download
Stable Release
| Platform | Download |
|---|---|
| Windows | Auto-Claude-2.7.4-win32-x64.exe |
| macOS (Apple Silicon) | Auto-Claude-2.7.4-darwin-arm64.dmg |
| macOS (Intel) | Auto-Claude-2.7.4-darwin-x64.dmg |
| Linux | Auto-Claude-2.7.4-linux-x86_64.AppImage |
| Linux (Debian) | Auto-Claude-2.7.4-linux-amd64.deb |
| Linux (Flatpak) | Auto-Claude-2.7.4-linux-x86_64.flatpak |
Beta Release
⚠️ Beta releases may contain bugs and breaking changes. View all releases
| Platform | Download |
|---|---|
| Windows | Auto-Claude-2.7.2-beta.10-win32-x64.exe |
| macOS (Apple Silicon) | Auto-Claude-2.7.2-beta.10-darwin-arm64.dmg |
| macOS (Intel) | Auto-Claude-2.7.2-beta.10-darwin-x64.dmg |
| Linux | Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage |
| Linux (Debian) | Auto-Claude-2.7.2-beta.10-linux-amd64.deb |
| Linux (Flatpak) | Auto-Claude-2.7.2-beta.10-linux-x86_64.flatpak |
All releases include SHA256 checksums and VirusTotal scan results for security verification.
Requirements
- Claude Pro/Max subscription - Get one here
- Claude Code CLI -
npm install -g @anthropic-ai/claude-code - Git repository - Your project must be initialized as a git repo
Quick Start
- Download and install the app for your platform
- Open your project - Select a git repository folder
- Connect Claude - The app will guide you through OAuth setup
- Create a task - Describe what you want to build
- Watch it work - Agents plan, code, and validate autonomously
Features
| Feature | Description |
|---|---|
| Autonomous Tasks | Describe your goal; agents handle planning, implementation, and validation |
| Parallel Execution | Run multiple builds simultaneously with up to 12 agent terminals |
| Isolated Workspaces | All changes happen in git worktrees - your main branch stays safe |
| Self-Validating QA | Built-in quality assurance loop catches issues before you review |
| AI-Powered Merge | Automatic conflict resolution when integrating back to main |
| Memory Layer | Agents retain insights across sessions for smarter builds |
| GitHub/GitLab Integration | Import issues, investigate with AI, create merge requests |
| Linear Integration | Sync tasks with Linear for team progress tracking |
| Cross-Platform | Native desktop apps for Windows, macOS, and Linux |
| Auto-Updates | App updates automatically when new versions are released |
Interface
Kanban Board
Visual task management from planning through completion. Create tasks and monitor agent progress in real-time.
Agent Terminals
AI-powered terminals with one-click task context injection. Spawn multiple agents for parallel work.
Roadmap
AI-assisted feature planning with competitor analysis and audience targeting.
Additional Features
- Insights - Chat interface for exploring your codebase
- Ideation - Discover improvements, performance issues, and vulnerabilities
- Changelog - Generate release notes from completed tasks
Project Structure
Auto-Claude/
├── apps/
│ ├── backend/ # Python agents, specs, QA pipeline
│ └── frontend/ # Electron desktop application
├── guides/ # Additional documentation
├── tests/ # Test suite
└── scripts/ # Build utilities
CLI Usage
For headless operation, CI/CD integration, or terminal-only workflows:
cd apps/backend
# Create a spec interactively
python spec_runner.py --interactive
# Run autonomous build
python run.py --spec 001
# Review and merge
python run.py --spec 001 --review
python run.py --spec 001 --merge
See guides/CLI-USAGE.md for complete CLI documentation.
Development
Want to build from source or contribute? See CONTRIBUTING.md for complete development setup instructions.
For Linux-specific builds (Flatpak, AppImage), see guides/linux.md.
Security
Auto Claude uses a three-layer security model:
- OS Sandbox - Bash commands run in isolation
- Filesystem Restrictions - Operations limited to project directory
- Dynamic Command Allowlist - Only approved commands based on detected project stack
All releases are:
- Scanned with VirusTotal before publishing
- Include SHA256 checksums for verification
- Code-signed where applicable (macOS)
Available Scripts
| Command | Description |
|---|---|
npm run install:all |
Install backend and frontend dependencies |
npm start |
Build and run the desktop app |
npm run dev |
Run in development mode with hot reload |
npm run package |
Package for current platform |
npm run package:mac |
Package for macOS |
npm run package:win |
Package for Windows |
npm run package:linux |
Package for Linux |
npm run package:flatpak |
Package as Flatpak (see guides/linux.md) |
npm run lint |
Run linter |
npm test |
Run frontend tests |
npm run test:backend |
Run backend tests |
Contributing
We welcome contributions! Please read CONTRIBUTING.md for:
- Development setup instructions
- Code style guidelines
- Testing requirements
- Pull request process
Community
- Discord - Join our community
- Issues - Report bugs or request features
- Discussions - Ask questions
License
AGPL-3.0 - GNU Affero General Public License v3.0
Auto Claude is free to use. If you modify and distribute it, or run it as a service, your code must also be open source under AGPL-3.0.
Commercial licensing available for closed-source use cases.


