Bitcoin is represented by a number in a PC, those numbers follow certain formats, like int or float or double. Those formats have a fixed number of decimals. The smallest decimal in Bitcoins representation is called a Satoshi.
A Satoshi is currently the smallest amount that the Bitcoin protocol can handle.
Second layer applications can use a different representation of Bitcoin which might allow Satoshis to be divided.
Bitcoin protocol might be updated in the future to allow the same.