Skip to main content

Commands

CommandDescription
naive phoneList phone numbers (default)
naive phone provisionBuy a US number + register the carrier campaign
naive phone statusShow the carrier-registration pipeline (account → campaign → numbers)
naive phone sendSend an outbound SMS (gated until the campaign is approved)
naive phone messages <id>List received SMS for a phone (newest first)
naive phone read <id>Read a received SMS in full
naive phone assign <id>Connect an agent to a phone number
naive phone assignments <id>List agents connected to a phone number
naive phone unassign <id> <agent_id>Remove an agent connection
naive phone release <id>Release a number back to the provider (stops billing)

Provision a number

naive phone provision --ein 12-3456789
naive phone provision --ein 12-3456789 --area-code 415
naive phone provision --ein 12-3456789 --area-code 415 --label "Support" --type local
Requires a completed LLC formation and the company EIN (for carrier registration). Returns the new number (live for inbound SMS immediately) and the carrier campaign status. Outbound SMS unlocks automatically when the campaign is approved.

Check status

naive phone status
Shows the Surge account, the 10DLC campaign status, and per-number capabilities — use it to see whether outbound SMS is unlocked.

Send an SMS

naive phone send --from <phone-id> --to +14155551234 --body "Hello"
Returns compliance_pending (no charge) if the campaign isn’t approved yet. Sending is not approval-gated.

Read received SMS

naive phone messages <phone-id>
naive phone messages <phone-id> --limit 50
naive phone messages <phone-id> --cursor 2026-05-01T00:00:00.000Z

naive phone read <message-id>

Agent assignment

naive phone assign <phone-id> --agent-id <agent-uuid>
naive phone assign <phone-id> --agent-id <agent-uuid> --permissions send_sms,receive_sms
naive phone assignments <phone-id>
naive phone unassign <phone-id> <agent-uuid>

Release a number

naive phone release <phone-id>
Releases the number back to the provider, removes agent connections, and stops monthly rental billing. Permanent.

Governance

Provisioning a number is sensitive (it spends credits and registers a carrier campaign). Depending on the user’s Account Kit it may require human approval — the command then returns status: "pending_approval" and runs only after naive approvals approve <id>. Sending SMS is not approval-gated. See naive approvals --help.