Background execution requires AgentOS. When running agents directly (not through AgentOS), hooks marked with run_in_background=True will execute synchronously.
Treat background hook arguments as read-only. AgentOS attempts to deep-copy run_input, run_context, run_output, session_state, dependencies, and metadata before queueing a hook. If a value cannot be copied, AgentOS logs a warning and passes the original reference. Background hooks can write to databases and external services.