The built environment embodies an inherent conflict: The “software” of the city changes faster than the “hardware.” Even at its most flexible and adaptable, the city’s physical infrastructure is rigid in comparison to the information flows that it channels, which assume forms such as money, culture, social interaction, and even people themselves. As a middle layer between the urban software and hardware, protocols help to route and guide these flows with various degrees of success. Not all protocols work well, and the built environment is a domain where protocol failure becomes painfully obvious, particularly in the inability to accommodate change over time. But what looks like failure may also be a protocol working as intended – a phenomenon that raises questions about how protocols are designed and how they mediate dynamic systems like cities. Accompanying this essay is a “pattern language” (a la Christopher Alexander) that highlights protocol design as a productive means of improving and maintaining the built environment.