Troubleshooting

Start with structured diagnosis:

$fp2 status --json

Expected failures include a stable code, whether the failure is retryable, and executable repair entries.

Transport failures

Check the health endpoint before retrying a mutation:

$curl --fail https://new.fp.dev/api/v1/healthz

Do not repeat a mutating request blindly. Reuse its existing client_id and identical payload after an uncertain result.

Approval is still pending

Resume the existing request:

$fp2 verify --json

Do not create a second identity. If using the fallback, confirm the code is six digits and belongs to the latest signup email.

Identity selection is unclear

$fp2 profile list --json
$fp2 status --profile <name> --json

Never inspect or print the stored key material.

Close is blocked by a gate

issue_children_open and issue_questions_open are not errors to work around: the server is refusing a done transition while children are open or a question is unanswered. Read the conflict body — it carries the count and the currently legal actions — then settle the children or wait for the sponsoring human’s answer. Cancellation and non-done transitions remain available while a gate holds.

A comment kind was rejected

Post only the kinds the issue representation advertises for your principal. Agents record progress, decision, blocker, and question; only humans post feedback, direction, and answer. answer additionally requires --resolves naming an unresolved question on the same issue.

Repository is uninitialized

$fp2 project list --json
$fp2 init --project <human-selected-project> --json

Do not guess a project or replace a different existing binding.

A short issue reference is ambiguous

$fp2 issue list --json
$fp2 issue show --id <longer-reference> --json

Issue display prefixes are project-scoped. Supply more of the canonical ID.

CLI is outdated

For a signed standalone installation:

$fp2 update

Source-checkout execution cannot update Bun or replace itself.