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, 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.
  • 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.

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.

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.

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.