What Changed
| Area | Old behaviour | New behaviour | Deep dive |
|---|---|---|---|
| Database URL | Unknown scheme → SQLite fallback | ValueError | Cloud Databases |
| Model string | Unrecognised name → OpenAI | ValueError | Multi-Provider Advanced |
| Daytona sandbox | Appeared available with client | NotImplementedError | Sandbox |
| LazyCache | Cached None on ImportError | Re-raises ImportError | Optional deps docs |
| Approval | enabled: false by default | enabled: true by default | Approval |
| Claude CLI backend | bypassPermissions default | default mode; bypass requires opt-in | CLI Backend Protocol |
Quick Start
Migrating
| Exception text | Fix |
|---|---|
Unable to infer DB backend from URL '...'; supported schemes: postgres://, mysql://, sqlite://, redis://, libsql://, http(s):// | Prefix URL with a supported scheme, e.g. sqlite:///path.db |
Cannot infer provider from model '...'. Use the 'provider/model' form, e.g. 'ollama/llama3', 'bedrock/anthropic.claude-3-sonnet'. | Use provider/model or a recognised prefix (gpt-, claude-, gemini-) |
Daytona backend not yet implemented. Use 'subprocess', 'docker', or 'e2b' sandbox instead. | Switch sandbox_type to a supported backend |
| Approval prompts where none expected | Set approval=False or approval: {enabled: false} in YAML |
Best Practices
Prefer explicit configuration
Prefer explicit configuration
When in doubt, spell out schemes, provider prefixes, and backend names — silent fallbacks are gone.
Disable approval only when intended
Disable approval only when intended
Approval is on by default (PR #2122). Use
approval=False for fully autonomous runs.Never use BYPASS without env gate
Never use BYPASS without env gate
Claude Code bypass requires
unsafe=True and PRAISONAI_CLAUDE_BYPASS_PERMISSIONS=1.Related
Approval
Safe-by-default approval gates
Cloud Databases
Supported DB URL schemes
Multi-Provider
Model string format
Sandbox
Available sandbox backends

