Last updated: January 29, 2026
This document provides security-relevant information about gitspine for enterprise security reviews and compliance assessments.
gitspine is a local terminal application (TUI) for visualizing and interacting with git repositories. It runs entirely on the user's machine with no server-side component beyond license validation.
gitspine makes network requests to exactly one endpoint:
| Endpoint | Purpose | Protocol | Frequency |
|---|---|---|---|
api.lemonsqueezy.com |
License validation | HTTPS (TLS 1.2+) | On launch, ~every 48 hours |
License validation requests contain only:
No repository data, file contents, paths, commit messages, or other sensitive information is ever transmitted.
After initial validation, gitspine can operate offline for up to 30 days with a valid license. If network access to api.lemonsqueezy.com is blocked, previously validated licenses continue to work within this grace period.
To allow license validation while restricting other access:
api.lemonsqueezy.comNote: Git operations (push, fetch, clone) use your existing git/ssh configuration and are separate from gitspine's network requirements.
gitspine stores configuration data in:
~/.config/gg/license.jsonThis file contains license information only (key, validation timestamps, customer name). It is created with standard user permissions (readable/writable by the user only).
Commit message drafts are temporarily written to the system temp directory when invoking an external editor. These files are deleted when the editor closes.
gitspine reads and writes files only within git repositories you explicitly open:
All git operations use the same permissions as your user account. gitspine does not request or use elevated privileges.
gitspine does not implement its own credential storage. All authentication for git operations (SSH keys, HTTPS credentials) is delegated to your system's git credential configuration. gitspine never has access to your passwords or tokens.
gitspine may spawn the following external processes:
All subprocess invocations use safe argument passing (arrays, not shell strings) to prevent command injection.
Key dependencies (Rust crates):
| Crate | Version | Purpose |
|---|---|---|
| git2 | 0.20 | Git operations (libgit2 bindings) |
| ratatui | 0.30 | Terminal UI rendering |
| crossterm | 0.29 | Cross-platform terminal control |
| ureq | 2.x | HTTP client (license validation) |
| serde / serde_json | 1.x | JSON serialization |
| chrono | 0.4 | Date/time handling |
| notify | 6.x | Filesystem watching |
A full dependency list can be provided upon request. All dependencies are sourced from crates.io, the official Rust package registry.
~/.config/gg/api.lemonsqueezy.comNo elevated privileges (root/admin) are required or requested.
If you discover a security vulnerability in gitspine, please report it responsibly:
Please include a detailed description of the vulnerability, steps to reproduce, and any relevant technical details. We appreciate responsible disclosure and will credit researchers (with permission) in our release notes.
Lemon Squeezy (lemonsqueezy.com) is our payment processor and license management provider. They handle:
Lemon Squeezy is a merchant of record and handles compliance with payment regulations. Their security practices are documented on their website.
For security questions or to request additional documentation for your security review, contact nick@pachulski.me.