# What do I do when Provely does not act?

> The start errors, the plugin warnings, an empty decision log, timeouts, and the answers to common questions about models, data and the guard posture.

Canonical: https://provely.sh/docs/troubleshooting  
Last updated: 2026-10-18  

**First, set `PROVELY_DECISION_LOG` and run the agent again. An empty log has three usual causes: no plugin applied, the posture only records, or no check found a fault.**

## The instance does not start. Why?

Most often the key is missing. The error is:

```text
Set api_key or bearer_token. Use PROVELY_API_KEY or PROVELY_BEARER_TOKEN.
```

Get your API key: sign in at [app.provely.sh/account/api-keys](https://app.provely.sh/account/api-keys), open API keys, and create a key. The dashboard shows the key once. Keep it in an environment variable, never in code.

Under `PROVELY_STRICT=true`, a plugin failure or an unsupported version also stops the start. An unknown id in `PROVELY_DISABLED_CHECKS` always stops the start. A fixed id stops the start only under `PROVELY_STRICT=true`.

## Why did no plugin apply?

- The plugin package is not installed. Install `@provely/instrumentations` or `provely-instrumentations`.
- The framework does not resolve from the application. A plugin applies only to a package that your application can import.
- The version is outside the range. The warning `PROVELY_UNSUPPORTED_FRAMEWORK` names it. Read [Frameworks and paths](/frameworks).
- The plugin failed. The warning `PROVELY_PLUGIN_FAILED` names it.

## Why does the log say record and not refuse?

The default `guard_mode` is `observe`, so an authority check only records. `PROVELY_DEFENSE=record` makes the defence checks record too. Read [Postures](/docs/postures).

## A tool hangs. What bounds it?

The bound is the largest timeout that your code states for the tool. With no stated timeout, it is the default of 600 seconds. A synchronous Python tool has no default bound. Read the timeout variables in [Postures](/docs/postures).

## An identical status poll was refused. Why?

Provely treats a tool with an unknown effect as a write. In one agent call, it refuses a write equal to a write that completed. Mark the tool as a read with `PROVELY_READ_TOOLS`. Only a person marks a read. A tool annotation or a statement of the model never does.

### Does a check call a language model?

No. Every check is a deterministic function. No check asks a model, and no check reads a prompt for intent.

### Does the decision log hold my data?

No. A line holds ids, codes, and hashes. It never holds an argument value, a tool result, or a candidate.

### Can I turn off every check?

No rule and no signature turns off `fm.repeat_of_completed` or `fm.repeat_after_unknown`. Read [Rules](/rules).

### Does a plain loop get the same protection as a framework?

Mostly. A tool that hangs or raises inside your own loop handler is out of reach, because your code runs the tool.

## Read next

- [Quick start](https://provely.sh/docs/quick-start)
- [How it works](https://provely.sh/how-it-works)
