⬡Trust, privacy & safety
HydraGit runs your git, on your machine, and talks to nobody else. No telemetry, no accounts, no cloud — and a set of guardrails that assume the riskiest thing in the room is an honest mistake.
Local-only by design
- Zero network egress from the UI. Every panel ships a Content-Security-Policy of
default-src 'none'+connect-src 'none', with no remote image loading — the webviews cannot phone home, by browser enforcement, not by promise. - No telemetry, no analytics, no accounts. The only network traffic is git itself talking to your remotes when you fetch/pull/push.
- Zero runtime dependencies. No third-party npm packages ship in the extension; the Go backend has no production dependencies. The supply chain is: VS Code, git, HydraGit.
- Logs stay on disk in VS Code's extension log folder, owner-readable only (
0700/0600), rotated after 7 days.
Hardened webview boundary
The panels are webviews; the extension host treats them as untrusted and verifies what they ask for:
- Requests may only target repositories the extension has actually discovered in your workspace — a panel can't point git at an arbitrary directory.
- "Open worktree" only opens paths git itself reports as worktrees.
- The Go backend validates required parameters on every state-changing command and runs git with argument lists only — there is no shell anywhere in the path.
The full security model lives in the repo's docs/PROJECT_CONTEXT.md.
Destructive-op guardrails
- Force-class operations (force delete, force push, clear all stashes) only execute moments after you've answered a native VS Code dialog — a confirmation the UI layer can't fake.
- Force-push always uses
--force-with-lease— it refuses to overwrite remote commits you haven't seen. - Before every risky operation the working tree is snapshotted automatically; hard resets auto-stash on top.
- Pre-commit safety checks warn before a secret, a conflict marker or a huge file lands in history.
Concurrent backend
Requests to the git backend run concurrently, with git operations serialized per
repository: writes are exclusive (two state-changing commands never race on one
.git), reads run in parallel, and a slow network operation — a fetch against a
dead remote — can't freeze the rest of the UI. In multi-repo workspaces, repositories never
block each other.
License
GPL-3.0 — free forever, and every fork must stay open source under the same license, so nobody can take HydraGit, tweak it, and put it behind a paywall. The HydraGit name and logo are not covered by the license.