naive projects use persists active_project_id in ~/.naive/config.json (mode 0600)
and validates the id before writing it, so a typo fails once here instead of 404-ing every
later command. Every request then carries it as the X-Naive-Project-Id header.
Selecting a project for one command
--project <project_id> is a global flag — it works on any command and does not touch
the persisted selection:
--project, then active_project_id from the config file, then the API
key’s pinned project, then the organization’s default project.
Together with a child project
A child project (a tenant user) is addressed inside a project, sonaive use sets both:
Every organization has a default project, and every account kit, child project and
resource that existed before projects did was backfilled into it. With no project selected
the CLI behaves exactly as it did — this whole page is opt-in. See
Projects.
Archiving vs deleting
naive projects delete refuses while the project still holds account kits or child
projects, rather than cascading through an organization’s data behind one verb. Move or
delete those first. The default project can never be deleted.
naive projects update <project_id> --archive is the answer when you want to retire a
project you cannot empty: the rows stay, and any request that selects it is refused
403 project_archived. --activate undoes it. The default project cannot be archived —
every un-projected request resolves to it.
The slug is immutable. It is the handle other systems address the project by, so
--name changes the display name alone.