> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bachs.io/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Money is always a decimal string at the currency's precision (for example "29.00"), paired with an ISO 4217 currency field. Never use minor units.
> Build against the sandbox first: base URL https://sandbox-api.bachs.io with sk_sandbox_ keys. Production is https://api.bachs.io with sk_live_ keys; going live is a key swap.
> Treat webhooks (for example collection.succeeded) as the source of truth for fulfilment, never client-side events or redirects.
> Subscriptions are created by completing a checkout for a recurring product. There is no direct create-subscription endpoint.
> IDs carry resource prefixes (cust_, prod_, sub_, chk_, inv_, ref_) and timestamps are ISO 8601 UTC.

# Coming Soon

> What we are building next for the Bachs CLI, and what we are deliberately not building.

The CLI is young. This page is what we are working on next, so you can tell the difference between something that is missing and something that is not coming.

If you need one of these sooner, or want something that is not here, open an issue on [the CLI repository](https://github.com/bachsdev/bachs-cli/issues). What developers actually ask for moves up this list.

***

## In progress

<Update label="Shell completions">
  Tab completion for commands, resources, and operations in bash, zsh, and fish. With more than twenty resource groups, remembering whether it is `bachs payouts get` or `bachs payouts retrieve` should not be something you have to do.
</Update>

<Update label="bachs logout">
  Clear stored credentials and revoke the paired key in one step. Today you remove `~/.config/bachs/config.json` yourself, and the key stays valid until it expires or you revoke it in the dashboard.
</Update>

<Update label="bachs sessions">
  List the forwarding sessions currently live on your account, and close one you left running on another machine. Useful when events are arriving somewhere you forgot about.
</Update>

***

## Planned

<Update label="Output formats">
  `--json` for unformatted output that is stable across releases, and `--csv` for lists you want in a spreadsheet. Today every response prints as formatted JSON, which is fine for reading and for `jq`, but it is not a contract we promise not to change.
</Update>

<Update label="Pagination that does not need a loop">
  `--all` on list operations, to walk every page and print the results as one collection rather than making you follow cursors by hand.
</Update>

<Update label="Config profiles">
  Named profiles so you can hold credentials for more than one account and switch with `--profile`, instead of re-pairing or juggling `BACHS_API_KEY`.
</Update>

<Update label="Longer-lived pairing">
  The key `bachs login` mints expires in 30 days, which is deliberate for a credential sitting on a laptop. We want a way to extend that for machines where re-pairing monthly is a nuisance, without turning it into a key that never expires.
</Update>

***

## Not planned

Some things get asked for often enough to be worth answering directly.

<AccordionGroup>
  <Accordion title="A second payload shape, with its own flags">
    `--events` takes event type names and is the only way to select them. If Bachs ever ships a second payload shape, it will extend `--events` rather than growing a parallel vocabulary of `--thin-events` and `--forward-thin-to`. That split is expensive to unwind once developers have scripts written against it.
  </Accordion>

  <Accordion title="Retrying deliveries to a forwarding session">
    Deliveries to `bachs listen` are not retried, and will not be. You are watching a terminal, so a backlog arriving hours later does not help you, and a retry queue aimed at a laptop is a queue that mostly fails. Registered URL destinations retry as normal.
  </Accordion>

  <Accordion title="Triggering events in production">
    `bachs trigger` is sandbox only. A fake `collection.succeeded` against production could have you fulfil an order nobody paid for. Use [`bachs events replay`](/cli/commands#events) to redeliver a real event instead.
  </Accordion>

  <Accordion title="Storing keys in the OS keychain">
    Worth doing, and not scheduled. Credentials are written to `~/.config/bachs/config.json` with owner-only permissions, which is the whole protection today. A cross-platform keychain integration is enough work to be its own project, and the honest position is that it is not started rather than coming soon.
  </Accordion>
</AccordionGroup>

***

## Next steps

* [Command reference](/cli/commands) for what ships today.
* [Test webhooks locally](/developer-portal/local-testing) to forward live events to your machine.
