Hi Dale,
If what you want is a "nullable boolean", you probably shouldn't be using the concept of a null pointer to represent it. Instead, you could use an enum with three enumerants, or you could use a union of a Bool and a Void.
While Cap'n Proto technically has null pointers on the wire, they generally should be treated as equivalent to the default value for that field. In fact, if you call getFoo() for a pointer field foo when the value is null, what you'll get back is actually foo's default value. If foo does not declare a default, the "default default" is empty (for lists or blobs) or a struct with all fields set to their defaults (for structs). There are a few motivations for this, with one of the main ones being security: unexpected null pointers tend to lead to exceptions or (in C++) crashes.
-Kenton