Find fixes for funding, membership, sign-in, GitHub connections, and deletion warnings.

## Funding

### An agent's turn was refused for lack of funds

`429 ASSISTANT_UNFUNDED` means the organization cannot fund the requested turn. Check the balance under **Settings > Billing** and the relevant provider key under **Settings > Keys**.

Add funds or fix the provider key as appropriate. Eligible work waiting for funds resumes automatically after funding is restored; a message refused before it was accepted may need to be sent again. Configure a low-balance alert to avoid another interruption. See [Billing](/billing).

### My model provider key bounced

A declined provider key is marked as bounced. A bounced key does not fall back to the organization's balance: work at that provider is refused until the key is replaced or removed.

Replace the key under **Settings > Keys** and wait for its verification result. Saving a replacement does not make it active immediately; while it is verifying, the organization's balance covers work at that provider again when platform funding is available, so an empty balance can still stop work. Check the provider account's credentials, credit, and model access if verification fails.

### My provider key was rejected when I pasted it

`422 BILLING_PROVIDER_KEY_INVALID` means the value does not match the expected key format. Check that you copied the complete key into the correct provider's field. This check does not establish whether the provider will accept it.

`503 BILLING_KEY_STORAGE_NOT_CONFIGURED` is a server configuration problem. Contact [Support](/support). Never include the key in a support message.

### My new organization has no balance

Open **Settings > Billing** to check welcome-credit eligibility and complete the card check. The card check does not charge the card; qualifying credit appears after the check succeeds.

If the card is refused, read the displayed reason. Previously used cards, prepaid cards, wallet payments, and failed security-code checks can prevent a grant.

Company verification can unlock additional credit. Use **Check again** after correcting company details, or follow the displayed review option. `WORK_CREDIT_REQUEST_PENDING` means a request is already waiting for review, not that another should be submitted. You can add funds independently of the welcome-credit process.

### Auto top-up won't turn on or isn't running

- `422 AUTO_TOP_UP_NEEDS_A_SAVED_CARD`: complete the card setup or a top-up to save a payment method.
- `422 TOP_UP_AMOUNT_OUT_OF_BOUNDS`: choose an amount within the range shown on the screen.
- **Paused while your API key is active and paying for usage:** auto top-up is paused, not disabled. An active provider key can pause auto top-up even if work using another provider still draws from the balance.

If auto top-up is enabled, also check its threshold and any displayed payment failure. See [Billing](/billing).

### I can't open billing history

`409 STRIPE_CUSTOMER_MISSING` means this organization has not yet established its Stripe billing account. Complete billing setup through the card-check or top-up flow, then open the portal again.

The internal [Transactions](/transactions) page is separate from Stripe receipts and card management.

## Limits

### Users are told there are too many requests

For `429 RATE_LIMITED`, wait for the duration in `Retry-After` before retrying. Avoid immediate retry loops. See [Limits](/limits) for the applicable limits, or contact [Support](/support) if normal traffic is consistently affected.

### One conversation stopped accepting messages

`409 ASSISTANT_THREAD_QUEUE_FULL` means the conversation already has ten waiting messages. Let the assistant process queued work before sending more. A message refused by this limit was not added to the queue.

## Members and access

### I can't invite someone

Inviting requires an owner. Under **Settings > Members**, check whether the address already belongs to a member or has an outstanding invitation:

- `INVITATION_ALREADY_MEMBER`: the person already has membership; do not send another invitation.
- `INVITATION_ALREADY_PENDING`: use the existing invitation, or revoke it before creating a replacement.

See [Members](/members).

### An invited person can't accept

`403 INVITATION_EMAIL_MISMATCH` means they are signed in with a different email address from the invited one. Sign in with the invited address.

For `INVITATION_EXPIRED` or `INVITATION_REVOKED`, an owner must create a new invitation. For `INVITATION_ALREADY_ACCEPTED`, check the membership first rather than repeatedly sending invitations.

Have the person check their invitation email if the link is missing. If it cannot be recovered, revoke the outstanding invitation before replacing it.

### I can't create an organization for my company

`409 ORGANIZATION_DOMAIN_DNS_CLAIMED` means another organization has already verified your email domain. Request access to the named organization instead of creating a parallel one. An owner reviews the request.

`JOIN_REQUEST_ALREADY_PENDING` means that request is already waiting for review.

### A member can't perform an operation an owner can

`403 PERMISSION_DENIED` means the signed-in member lacks the required permission. Owners manage publishing, billing, keys, membership, SSO, and integrations. Members can perform everyday drafting and review work but cannot publish agent or skill revisions or release documentation.

`403 NOT_AN_ORGANIZATION_MEMBER` is different: check the selected organization and the signed-in account. See [Members](/members).

## Single sign-on

### I'm told my domain requires SSO

`403 SSO_REQUIRED_FOR_DOMAIN` means this account must sign in through the organization's identity provider. Use the SSO path on the sign-in screen.

If the provider configuration is broken, contact an owner. Owners have an exempt sign-in path for recovery; disabling SSO is not the normal fix for a member's sign-in problem.

### I can't register SAML

Check **Settings > Domains & SSO**:

- `SSO_SAML_NOT_IN_PLAN`: SAML requires the Enterprise entitlement.
- `SSO_DOMAIN_NOT_DNS_VERIFIED`: verify ownership of the domain first.
- `SSO_CONNECTION_ALREADY_EXISTS`: manage the existing connection rather than registering a second one.
- `SSO_IDP_METADATA_REQUIRED` or `SSO_IDP_METADATA_REJECTED`: provide either a metadata URL or metadata XML, and check that the supplied metadata is valid.

See [SSO](/sso) for setup. Disabling an existing connection remains available after a plan downgrade.

### My domain won't verify

Publish the exact TXT record shown in the dashboard at the specified domain, then retry verification after DNS has propagated.

| Error                        | Next step                                                                  |
| ---------------------------- | -------------------------------------------------------------------------- |
| `DNS_RECORD_NOT_FOUND`       | Check the record's host and value; the matching record is not visible yet. |
| `DNS_CHALLENGE_EXPIRED`      | Issue a new challenge and use its new record value.                        |
| `EMAIL_DOMAIN_NOT_CLAIMABLE` | Use your company's domain, not a public email provider's domain.           |
| `DNS_LOOKUP_FAILED`          | Retry later; the DNS lookup itself failed.                                 |

## GitHub

### Teaflask can't see my repository

Check the GitHub App installation's repository selection on GitHub and its status in **Settings > Integrations > GitHub**. A suspended or removed installation cannot provide normal repository access.

- `GITHUB_INSTALLATION_NOT_ACCESSIBLE`: reconnect using a GitHub account with access to that installation.
- `GITHUB_INSTALLATION_ALREADY_CONNECTED`: the installation is attached to another Teaflask organization. Confirm which organization should use it before disconnecting anything.
- `GITHUB_INSTALLATION_NOT_FOUND`: check whether the app was removed and reconnect if necessary.

See [GitHub](/github).

### Teaflask won't accept my production branch

In the dashboard, use **Configure** beside the repository and enter a branch name such as `release`, without `refs/heads/`.

`422 GITHUB_PRODUCTION_REF_INVALID` means the branch reference is malformed. If configuring through the API instead, the stored reference uses the full `refs/heads/branch-name` form. `422 GITHUB_PRODUCTION_REF_NOT_FOUND` means the reference has valid syntax but that branch was not found on GitHub. Check its spelling and whether it exists in the selected repository.

## Deletion warnings

### I can't delete an agent, skill, or action

Read the dependencies named in the warning before confirming:

- `AGENT_DEFINITION_IN_USE`: active publishable keys select this agent.
- `SKILL_GRANTED_BY_PUBLISHED_AGENTS`: published agents depend on the skill.
- `ACTION_GRANTED_BY_PUBLISHED_AGENTS`: published agents or instructions depend on the action. This warning can also appear for changes to an action's behavior.

Update the dependent configuration first if those installations must keep working. Confirm deletion only when you intend the listed consequences.

### I can't delete my organization

`422 ORGANIZATION_NAME_CONFIRMATION_MISMATCH` requires the exact organization name, including letter case.

`409 ORGANIZATION_DELETE_BLOCKED` lists additional consequences that need explicit confirmation, such as forfeiting the remaining balance or cancelling work in progress. Review those consequences before proceeding. Organization deletion is not reversible.
