Most of the Keykos key types known to the kernel include an 8 bit field known as the data byte. When such a key to an object is invoked a message created by the invoker is delivered to the code defining the object. The data byte of the key is delivered along with the message. In general this information modifies the meaning of the key. This applies to kernel objects and objects defined by domains. If the key is a start key then the data byte is delivered along with the invocation message to the code obeyed by the domain designated by the start key. The order on the domain service key that creates a start key, specifies the data byte to be placed in the start key to the domain. For kernel objects the kernel interprets the data byte directly. The holder of a key has no direct access to its data byte. The data byte is the direct and primitive Keykos support for facets. Two capabilities are not equal unless they have the same data byte.
Data keys and return keys have no data byte.
seL4 has this feature which they call a badge. They have a better name.