Run your first pentest from the terminal in under 5 minutes. Install the CLI, add your domain, configure credentials, scan it, and export the report.
The KinoSec dashboard is great, but if you live in the terminal, the CLI is your new best friend. It lets you run pentests, manage assets, and export reports — all without leaving your shell.
Here's what we'll cover:
Let's go.
Before we start, you'll need two things:
1. A KinoSec account. If you don't have one yet, sign up here.
2. An API token. Head to your dashboard:
assets:read, assets:write, scans:read, scans:create, findings:read, reports:readkns_ and is only shown onceKeep that token handy. You'll need it in a moment.
The fastest way is a single command — no Node.js required:
curl -fsSL https://kinosec.ai/install | bash
Or via npm if you prefer:
npm install -g @kinosec/cli
Confirm it's working:
kinosec --version
0.10.0
Log in with the API token you just created:
kinosec auth login
API token: ********
✓ Authenticated as [email protected]
Plan: Security Pro (kns_plan_security_pro)
Org: Varradon Security
You can also pass the token directly with --token, or set the KINOSEC_TOKEN environment variable if you prefer not to store credentials locally.
Verify everything looks right:
kinosec me
User ID: …46655440000
Email: [email protected]
Plan: Security Pro (kns_plan_security_pro)
Org: Varradon Security
Auth Type: pat
Token ID: …a1b2c3d4
Scopes: assets:read, assets:write, scans:read, scans:create, findings:read, reports:read
Before scanning, you need to tell KinoSec what you own. Let's add a domain:
kinosec asset create --type domain --value tessarly.io
✓ Asset created: tessarly.io
ID: 7f3a9b2c-1234-4abc-9def-567890abcdef
Type: domain
Most real vulnerabilities hide behind login pages. If your app has authenticated areas, configure credentials so KinoSec can test them:
kinosec asset auth set tessarly.io --type bearer --bearer-token "$TOKEN"
KinoSec supports five auth types depending on how your app handles authentication:
| Type | Use when |
|---|---|
bearer |
Your app uses Authorization: Bearer <token> headers |
basic |
Your app uses HTTP Basic Authentication |
apikey |
Your app uses a custom API key header |
session |
Your app has a login form |
cookie |
You want to provide a pre-authenticated session cookie |
Not sure which flags you need? Use the interactive mode — it walks you through it:
kinosec asset auth set tessarly.io
Want to test for broken access controls? Add a second account with lower privileges:
kinosec asset auth set-target tessarly.io \
--target-username [email protected] \
--target-password "$VIEWER_PASS"
KinoSec will try to access the target's data using the primary account — any success means a vulnerability.
Verify what's configured:
kinosec asset auth show tessarly.io
Pass credentials via environment variables to keep them out of shell history.
Time for the fun part. Start a pentest:
kinosec pentest --target tessarly.io
The CLI will ask you to confirm you're authorized to test this target:
⚠ Authorization Required
Penetration testing without proper authorization is illegal
and may result in criminal prosecution.
Target: tessarly.io
By proceeding, you confirm that:
• You own or have explicit written authorization to test this target
• You will comply with all applicable laws and regulations
• You will not use the results for illegal or malicious purposes
• You accept full legal responsibility for this pentest
Unauthorized access to computer systems is a criminal offense under
laws such as the CFAA (US), Computer Misuse Act (UK), and similar
legislation worldwide. KinoSec bears no liability for unauthorized
use of its services.
Agree and continue? (y/N) y
Type y and hit Enter. The CLI automatically starts watching progress:
✓ Pentest started: tessarly.io
Profile ID: a1b2c3d4-5678-4abc-9def-abcdef012345
Mode: full
─────────────────────────────────────
✓ Subdomain enumeration 14.2s (total 14.2s)
✓ Port scanning 22.8s (total 37.0s)
✓ Vulnerability scanning 412.5s (total 449.5s)
✓ Analysis 98.3s (total 547.8s)
✓ Pentest completed: tessarly.io 547.8s
Findings: 1 critical 1 high 1 medium 1 low 0 info
View details: kinosec finding list a1b2c3d4-5678-4abc-9def-abcdef012345
Full mode is the default and runs a comprehensive pentest — it takes 1-2 hours. You can also use the short flag -t instead of --target.
Press Ctrl+C to stop watching — the scan continues in the background. If you configured credentials in Step 4, KinoSec automatically uses them during the scan.
Let's see what the scan found:
kinosec finding list a1b2c3d4-5678-4abc-9def-abcdef012345
┌──────────────────────────────────────┬──────────────────────────────────────────┬──────────┬────────┐
│ ID │ Name │ Severity │ Status │
├──────────────────────────────────────┼──────────────────────────────────────────┼──────────┼────────┤
│ b1c2d3e4-5678-4abc-9def-111111111111 │ SQL Injection in Login Form │ CRITICAL │ open │
│ b1c2d3e4-5678-4abc-9def-222222222222 │ Missing CSRF Token │ HIGH │ open │
│ b1c2d3e4-5678-4abc-9def-333333333333 │ Insecure Cookie Flags │ MEDIUM │ open │
│ b1c2d3e4-5678-4abc-9def-444444444444 │ Server Version Disclosure │ LOW │ open │
└──────────────────────────────────────┴──────────────────────────────────────────┴──────────┴────────┘
Want details on a specific finding? Drill in:
kinosec finding get b1c2d3e4-5678-4abc-9def-111111111111
ID: b1c2d3e4-5678-4abc-9def-111111111111
Name: SQL Injection in Login Form
Severity: CRITICAL
Status: open
Verification: verified
Phase: vulnerability-scanning
Created: 2026-05-12T14:23:45Z
Description
───────────
User input is directly concatenated into SQL queries without
sanitization, allowing an attacker to extract or modify database
contents.
Solution
────────
Use parameterized queries and prepared statements. Never
concatenate user input into SQL strings.
Package everything into a report you can share:
kinosec report export a1b2c3d4-5678-4abc-9def-abcdef012345 --format markdown > pentest-report.md
Drop this into your team's wiki, attach it to a compliance ticket, or share it with stakeholders. Need machine-readable output? Skip the --format flag — JSON is the default.
You've just run your first pentest from the terminal. Here's what else you can do:
kinosec asset auth set for deeper scanskinosec asset auth set-target to detect IDOR vulnerabilitieskinosec pentest schedule createkinosec finding retest <id>Happy hacking.