Leaky abstraction refers to the phenomenon in software development where abstractions designed to simplify and hide the underlying complexity of a system fail to fully encapsulate that complexity, causing some implementation details to become visible. This means even well-designed abstractions cannot completely conceal their internal mechanisms, forcing users to understand low-level intricacies to use them effectively or troubleshoot issues. This increases cognitive load on developers and may lead to performance problems or unexpected behaviors.