Add a contact-first command to change the default delivery box
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 68/100
Research direction
Start by reading the existing CLI code for screener approve --box, including how box names are resolved. Then trace the SDK's Designations().Create(boxID, contactID) and Contacts().Screen(contactID, status) primitives. Done means a contact-first command can route a contact to the supported boxes without requiring a clearance ID, with structured output matching existing mutation conventions.
Written by the indexing model from the issue text.
Description
Problem
HEY's web UI lets you open a contact and change Deliver their emails to… directly between Imbox, The Feed, Paper Trail, and Screened Out.
The CLI does not currently expose the same contact-first workflow. The closest route is clearance-oriented:
- Find the contact or search
hey screener history. - Extract the contact's clearance ID.
- Run
hey screener approve <clearance-id> --box "The Feed".
That is cumbersome for both people and agents, and requires callers to understand the distinction between contact IDs and clearance IDs for what is conceptually a contact preference.
Proposed behavior
Add a dedicated contact command that mirrors the web UI, for example:
hey contact deliver <contact-id> --to "The Feed"
hey contact deliver <contact-id> --to "Paper Trail"
hey contact deliver <contact-id> --to "Imbox"
hey contact deliver <contact-id> --to "Screened Out"
The exact command name could also be route, designate, or an extension to contact update. It would be especially useful if the target could be resolved by contact ID or email address.
Implementation context
The SDK already exposes contact/box primitives that appear intended for this workflow:
Designations().Create(boxID, contactID)designates a contact to a box.Contacts().Screen(contactID, status)updates screening status by contact ID.- Box names can already be resolved by existing CLI code used by
screener approve --box.
A dedicated command could resolve the destination internally and avoid leaking clearance IDs into the user-facing workflow. Returning the contact, destination, and reverse command in structured output would also fit the CLI's existing mutation conventions.
Expected outcome
An agent should be able to translate “send future mail from this contact to The Feed” into one direct command, matching the web UI's contact-level action without first searching Screener history.
- Dominant language
- Go
- Stars
- 376
- Forks
- 44
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 130
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from basecamp/hey-cli
-
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Difficulty 4/5 3-5 days Newbie friendliness 65/100
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
-
Difficulty 5/5 Over a week Newbie friendliness 48/100
All issues in basecamp/hey-cli
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 84/100
-
enhancement needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
kind/cleanup
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
kubernetes-sigs/kueue#15947 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
sympozium-ai/sympozium#627 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100