# libtmux::CommandObserver

- **Module:** libtmux
- **Package:** libtmux-cxx
- **Language:** C++
- **Kind:** typealias
- **Source:** https://github.com/libtmux/libtmux-cxx/blob/85e8bd603a322dc32bb8b9aeb1a72bcf36945f1d/include/libtmux/command.hpp#L184
- **Page:** https://libtmux.org/reference/cxx/libtmux-commandobserver/

Told about every command, as it finishes.

There is otherwise no way to see what this library ran: a caller debugging a tmux interaction has only the failures, and nothing at all when things succeed. The command is rendered as tmux received it, with any argument marked sensitive replaced.

Synchronous calls invoke it on their caller's thread. Asynchronous calls invoke it only on the thread calling `CommandRuntime::dispatch_ready`. No internal lock is held; a shared observer must synchronise itself. Both callback arguments expire on return.
