Cleansh – Sanitize Your Terminal Output, Securely.
Contributing Guidelines | Code of Conduct | Changelog | Security Policy | Trademark Policy | Command Handbook
Cleansh is a high‑trust, single‑purpose CLI tool designed to sanitize terminal output for safe sharing. It prioritizes security by default, requires zero configuration to get started, and offers extendability when needed. The project is in active development, with
v0.1.5bringing significant enhancements to redaction accuracy, security, and user control. We value your feedback. Please report any issues you encounter.
Table of Contents
| Section |
|---|
| 1. Overview |
| 2. Important Note on Licensing |
| 2.1. Commercial Use Defined |
| 2.2. Cleansh v0.1.5: Evaluation & Trial Period |
| 2.3. Future Enforcement: Cleansh v0.1.7 and Beyond |
| 2.4. How to Obtain a Commercial License |
| 2.5. Violation of Commercial Use Policy |
| 3. Core Capabilities – Current Version (v0.1.5) |
| 3.1. Enhanced Redaction Categories |
| 3.2. Advanced Features (with flags) |
| 4. Usage Examples |
| 5. Known Issues |
| 6. Configuration Strategy |
| 7. Clipboard Support |
| 8. Security by Default Principles |
| 9. Future Vision & Roadmap |
| 10. Installation & Getting Started |
| 11. License |
1. Overview
cleansh is a powerful and reliable command‑line utility designed to help you quickly and securely redact sensitive information from your terminal output.
Whether you're debugging, collaborating, or sharing logs, cleansh ensures that confidential data like IP addresses, email addresses, and access tokens never leave your local environment unmasked. Piped directly from stdin or loaded from files, cleansh provides a robust, pre‑configured solution for data sanitization, with flexible options for custom rules and output formats.
Sanitize your terminal output. One tool. One purpose.
2. Important Note on Licensing
As part of cleansh's commitment to sustainable development and continued innovation, we are shifting our licensing model starting with v0.1.5.
| Aspect | Versions (< v0.1.5) |
Versions (v0.1.5 and beyond, pre-v1.0) |
|---|---|---|
| Primary License | MIT License | PolyForm Noncommercial License 1.0.0 |
| Noncommercial Use | Free to use | Free to use (for personal, academic, research, etc.) |
| Commercial Use | Free to use | Requires a separate commercial license |
| Previous Versions | Remain permanently MIT licensed | N/A (new license applies from v0.1.5 onwards) |
2.1. Commercial Use Defined
"Commercial Use" includes, but is not limited to, any use of Cleansh:
- By for-profit entities or organizations.
- In a production environment for a commercial product or service.
- Where the use of Cleansh directly or indirectly contributes to commercial advantage or monetary compensation.
- By government agencies, unless explicitly covered by a separate agreement.
2.2. Cleansh v0.1.5: Evaluation & Trial Period
Cleansh version 0.1.5 (current release) includes "Pro Features" that are typically intended for commercial applications.
- While the core distribution remains under the PolyForm Noncommercial License 1.0.0, we understand that commercial entities may wish to evaluate these features.
- For version 0.1.5 only, commercial users may use Cleansh for evaluation and trial purposes without immediate legal action from Cleansh maintainers.
- This evaluation period is intended to allow commercial users to assess Cleansh's suitability for their needs.
2.3. Future Enforcement: Cleansh v0.1.7 and Beyond
Effective with the release of Cleansh version 0.1.7 (expected in Q4 2025), commercial use of Cleansh, including its "Pro Features," will strictly require a valid commercial license.
- From v0.1.7 onwards, the Cleansh application will incorporate an in-app license key validation mechanism.
- Users wishing to continue commercial use of Cleansh beyond version 0.1.6 will need to acquire a commercial license key.
- We will provide a dedicated section on our official website for license key acquisition.
2.4. How to Obtain a Commercial License
To obtain a commercial license for Cleansh, or for any commercial inquiries prior to the release of v0.1.7:
- Please visit our official website (URL to be provided upon v0.1.7 release).
- Alternatively, contact us directly via email: cleansshh@gmail.com
2.5. Violation of Commercial Use Policy
Any commercial use of Cleansh from version 0.1.7 onwards without a valid, active commercial license key will be considered a violation of this Commercial Use Policy and the underlying PolyForm Noncommercial License 1.0.0. Cleansh maintainers reserve the right to pursue appropriate legal action in such cases.
3. Core Capabilities – Current Version (v0.1.5)
This release represents a significant leap forward in cleansh's accuracy, security, and testability. Based on our rigorously passing test suite, cleansh accurately masks:
3.1. Enhanced Redaction Categories:
cleansh offers broad and precise detection across a wide range of sensitive data types, complemented by robust programmatic validation for key PII:
- Emails: Common email formats (e.g.,
user@example.com). - IP Addresses: Both IPv4 (e.g.,
192.168.1.1) and IPv6 addresses (full uncompressed form, e.g.,2001:0db8:85a3:0000:0000:8a2e:0370:7334). - Tokens & Secrets:
- JWTs
- GitHub PATs (
ghp_…) - GitHub fine‑grained PATs (
github_pat_…, 72 characters) - Stripe keys (
sk_live_…,sk_test_…,rk_live_…) - AWS Access/Secret Keys
- GCP API Keys
- Google OAuth tokens (
ya29.…, 20–120 characters) - SSH private keys
- Generic Hex Secrets (32 and 64 characters)
- Generic Tokens
- Personal Identifiable Information (PII):
- Credit Card Numbers
- US Social Security Numbers (SSN) (with programmatic validation against invalid patterns like
000-XX-XXXX,666-XX-XXXX, or9XX-XX-XXXX). - UK National Insurance Numbers (NINO) (with programmatic validation against invalid prefixes and structural rules).
- South African ID Numbers
- Paths & URLs:
- Linux/macOS Absolute Paths (
/home/user/...→~/home/user/...). - Windows Absolute Paths (
C:\Users\…,\\Server\Share\…). - Slack Webhook URLs (
https://hooks.slack.com/services/T...)
- Linux/macOS Absolute Paths (
- Authentication Headers:
- HTTP Basic Auth Headers (
Authorization: Basic ...)
- HTTP Basic Auth Headers (
3.2. Advanced Features (with flags):
cleansh provides command‑line flags to customize its behavior, all thoroughly tested:
- Copy to Clipboard (
-c/--clipboard): Instantly copy sanitized output. - Diff View (
-d/--diff): Show a colored, line‑by‑line diff of redactions. - Custom Config (
--config <path>): Load and merge your YAML redaction rules with built-in defaults. - Output File (
-o <path>): Write sanitized content to a file. - Suppress Summary (
--no-redaction-summary): Suppress the display of the redaction summary at the end of the output. - Enable Specific Rules (
--enable-rules <names>): Explicitly activate opt-in redaction rules by name (comma-separated). - Disable Specific Rules (
--disable-rules <names>): Explicitly deactivate any redaction rules by name (comma-separated), overriding defaults or custom enabled rules. - Select Rule Set (
--rules <name>): Apply a predefined rule configuration (e.g.,defaultfor standard non-opt-in rules,strictto enable all rules including opt-in ones). - Statistics Mode (
--stats-only): Analyze input for sensitive data and provide a summary without performing redaction. - Export Stats to JSON File (
--stats-json-file <path>): When in statistics mode, write the detailed redaction summary to a JSON file. - Export Stats to Stdout (
--export-json-to-stdout): When in statistics mode, print the JSON summary directly tostdout, suppressing other output. - Sample Matches in Stats (
--sample-matches <count>): Include a specified number of unique original match examples for each rule in JSON statistics. - Fail on Threshold (
--fail-over-threshold <count>): In statistics mode, exit with an error code if the total number of detections exceeds this count. - Debug Logging (
--debug): Enable verbose debug output for troubleshooting. - Suppress Debugging (
--no-debug): Disable debug logging. - Quiet Output (
--quiet): Suppress all warnings and informational messages, showing only errors.
4. Usage Examples
Basic Sanitization (stdin):
|
Docker Logs:
|
Kubectl Logs:
|
Clipboard:
|
Diff:
|
Custom Rules:
|
Save to File:
|
File Input:
Combined:
|
Enable/Disable Specific Rules:
|
5. Known Issues
5.1. Custom‑Rule Overrides
- Severity: Low — Broad “generic token” rules can potentially override more specific custom placeholders if not carefully defined.
- Workaround: Make your custom patterns more precise or use the
--disable-rulesflag to control which rules are active.
6. Configuration Strategy
6.1. Custom Rules (--config)
You can define your own custom redaction rules in a YAML file and merge them with Cleansh's built-in defaults:
rules:
- name: emp_id
pattern: 'EMP-\d{5}'
replace_with: '[EMPLOYEE_ID_REDACTED]'
multiline: false
dot_matches_new_line: false
6.2. Rule Enable/Disable (--enable-rules, --disable-rules)
You can activate opt_in rules or deactivate any rule by name using CLI flags:
7. Clipboard Support
- macOS & Windows: Built‑in.
- Linux: Requires
xclip,xselorwl-clipboard.
8. Security by Default Principles
| Feature | Principle |
|---|---|
| No runtime eval | All redaction via static regex, no code execution |
| Local‑only | No network calls or telemetry |
| Immutable defaults | Built‑in rules embedded at compile time |
| Path redaction | Filesystem paths normalized to ~ or Windows equivalents |
| YAML sandboxed | Declarative custom rules only, no arbitrary code execution |
| Clipboard opt‑in | -c flag explicitly required for clipboard copy |
| ANSI Stripping | Input content is pre-sanitized of escape codes to prevent evasion |
| Programmatic Validation | Numerical PII rules have built-in validation for added accuracy and security |
9. Future Vision & Roadmap
Cleansh is charting a course toward adaptive, user-driven enhancements, transforming it into an intelligent, trainable security assistant. Planned areas of exploration include:
- Interactive Feedback Loop: Enable users to provide feedback on specific matches (e.g., redact, ignore once, always ignore), allowing the tool to refine future detections.
- Heuristic Tuning: Adjustable detection thresholds (entropy levels, pattern sensitivity) for fine-grained control over candidate selection.
- Enhanced CI/CD Modes: Non-interactive audit outputs (JSON/exit codes) for automated pipelines, plus optional machine-readable reports.
- Ecosystem Extensions: Additional integrations (e.g., pre-commit hooks, GitHub Actions, GitLab CI templates) and a WASM core for broader compatibility.
- Marketplace Concepts: Explore the potential for a curated repository of community-maintained rule sets.
- Enterprise Features: Namespaced rule collections, role-based workflows, and centralized policy management.
These explorations will inform future releases, helping us build the most robust, flexible, and trustworthy sanitization tool for developers and organizations.
10. Installation & Getting Started
Prebuilt Binaries (Recommended):
Download the latest prebuilt binaries for your platform from GitHub.
Install Script:
) |
From crates.io:
From Source:
)
11. License
This project is licensed under the PolyForm Noncommercial License 1.0.0.
Precision redaction. Local‑only trust. Built for devs.