hs
# hs
Use `hs` to interact with HelpScout from the terminal. Two API namespaces: `hs inbox` (Mailbox API — conversations, customers, users, teams, etc.) and `hs docs` (Docs API — sites, collections, categories, articles).
## Auth
Inbox uses OAuth2 client credentials (App ID + App Secret). Docs uses an API key.
- `hs inbox auth login` — interactive setup, validates against the API
- `hs docs auth login` — prompt for Docs API key, validates
- `hs inbox auth status` / `hs docs auth status` — check stored credentials
- `hs inbox auth logout` / `hs docs auth logout` — remove credentials
Credential resolution order: **OS keyring** → **config file**. For non-interactive auth, use `hs inbox config set --inbox-app-id <id> --inbox-app-secret <secret>`.
## Inbox commands
### Conversations (`conv`)
- `hs inbox conv list --status active --mailbox <id> --tag <name> --assigned-to <uid> --embed threads`
- `hs inbox conv get <id> --embed threads`
- `hs inbox conv create --mailbox <id> --subject "..." --customer <email> --body "..."`
- `hs inbox conv update <id> --status closed --subject "..."`
- `hs inbox conv delete <id>`
- `hs inbox conv threads list <conv-id>`
- `hs inbox conv threads reply <conv-id> --customer <email> --body "..." --status closed`
- `hs inbox conv threads note <conv-id> --body "..."`
- `hs inbox conv tags set <conv-id> --tag billing --tag urgent`
- `hs inbox conv fields set <conv-id> --field <id>=<value>`
- `hs inbox conv attachments upload <conv-id> --thread-id <id> --file ./path`
### Customers (`cust`)
- `hs inbox cust list --query "email:jane@example.com"`
- `hs inbox cust get <id>`
- `hs inbox cust create --first-name Jane --last-name Doe --email jane@example.com`
- `hs inbox cust update <id> --last-name Smith`
- `hs inbox cust delete <id>`
### Mailboxes (`mb`)
- `hs inbox mb list` / `hs inbox mb get <id>`
- `hs inbox mb folders list <mb-id>` / `hs inbox mb custom-fields list <mb-id>`
### Users
- `hs inbox users list --email user@co.com` / `hs inbox users get <id>` / `hs inbox users me`
- `hs inbox users status get <uid>` / `hs inbox users status set <uid> --status away`
### Teams
- `hs inbox teams list` / `hs inbox teams members <team-id>`
### Organizations
- `hs inbox organizations list --query "acme"` / `hs inbox organizations get <id>`
- `hs inbox organizations create --name "Acme Corp"` / `hs inbox organizations delete <id>`
### Tags / Ratings
- `hs inbox tags list` / `hs inbox ratings list`
### Workflows (`wf`)
- `hs inbox wf list` / `hs inbox wf run <id> --conversation-ids id1,id2`
- `hs inbox wf update-status <id> --status active`
### Webhooks (`wh`)
- `hs inbox wh list` / `hs inbox wh get <id>`
- `hs inbox wh create --url https://... --events convo.created --secret s3cret`
- `hs inbox wh delete <id>`
### Saved replies
- `hs inbox saved-replies list --mailbox-id <id>`
- `hs inbox saved-replies create --mailbox-id <id> --name "Greeting" --body "Hello..."`
### Reports
- `hs inbox reports conversations --start 2025-01-01 --end 2025-01-31 --mailbox <id>`
- Subcommands: `chats`, `company`, `conversations`, `customers`, `docs`, `email`, `productivity`, `ratings`, `users`
### Tools
- `hs inbox tools briefing` — daily briefing summary
- `hs inbox tools briefing --assigned-to <uid> --embed threads` — agent-specific briefing with thread content
## Docs commands
### Sites
- `hs docs sites list` / `hs docs sites get <id>`
- `hs docs sites create --subdomain help --title "Help Center"`
### Collections
- `hs docs collections list --site <id>` / `hs docs collections get <id>`
- `hs docs collections create --site <id> --name "Getting Started"`
### Categories
- `hs docs categories list <collection-id>` / `hs docs categories get <id>`
- `hs docs categories create --collection <id> --name "FAQ"`
- `hs docs categories reorder <collection-id> --categories id1,id2,id3`
### Articles
- `hs docs articles list --collection <id>` or `--category <id>`
- `hs docs articles search --query "password reset" --site <id>`
- `hs docs articles get <id>` / `hs docs articles get <id> --draft`
- `hs docs articles create --collection <id> --name "How to reset" --text "Step 1..."`
- `hs docs articles update <id> --text "Updated..." --status published`
- `hs docs articles delete <id>`
- `hs docs articles draft save <id> --text "..."` / `hs docs articles draft delete <id>`
- `hs docs articles revisions list <id>` / `hs docs articles revisions get <id> <rev-id>`
- `hs docs articles upload <id> --file ./image.png`
### Redirects
- `hs docs redirects list <site-id>` / `hs docs redirects find --site <id> --url /old-path`
- `hs docs redirects create --site <id> --url-mapping /old --redirect /new`
### Assets
- `hs docs assets article upload --file ./img.png`
- `hs docs assets settings upload --file ./logo.png`
## Output & global flags
- `--format table|json|json-full|csv` — output format (default: `table`)
- `--no-paginate` — fetch all pages automatically
- `--page <n>` / `--per-page <n>` — pagination (defaults: 1, 25)
- `--debug` — show HTTP request/response details
## Config
- `hs config set --format json --inbox-default-mailbox 12345`
- `hs config get [key]` — print one or all config values
- `hs config path` — print config file location
- Default location: `~/.config/hs/config.yaml` (Linux/macOS), `%AppData%\hs\config.yaml` (Windows)
## PII redaction
Inbox commands redact customer/user PII with deterministic fake identities. Controlled via config key `inbox_pii_mode`.
| Mode | Effect |
|------|--------|
| `off` | No redaction (default) |
| `customers` | Redact customer names, emails, phones |
| `all` | Redact both customers and users |
- `--unredacted` flag on `hs inbox` disables redaction for one call (requires `inbox_pii_allow_unredacted: true` in config)
## Permissions
Allowlist model — restrict which commands an agent can run. Empty policy = unrestricted.
- Set via config key `inbox_permissions` / `docs_permissions` — comma-separated `resource:operation` pairs
- Wildcards: `*:read`, `conversations:*`
- Operations: `read`, `write`, `delete`, `*`
- `hs inbox permissions` — inspect current policy, shows ALLOW/DENY per command
Example: `hs inbox config set --inbox-permissions "conversations:read,customers:read,mailboxes:read"`
## Notes
- Self-update: `hs update`
- Shell completions: `hs completion bash|zsh|fish|powershell`
标签
skill
ai