A leaky abstraction is an implemented abstraction where details and limitations of the implementation leak through.
Abstractions leak due to many reasons, some of which are unforeseen platform compatibility issues, false assumptions, poor API design, and API deprecation.
References