I've had this before we him (he's 7 now) but I thought we'd got it sorted - he's got his own little box of "snacks" (biscuits, odd sweet or chocolate thrown in, occasional packet of crips etc - we don't have them in often so it's only when we've actually bought a multipack) and can have fruit whenever he wants - but this afternoon I went to get some clothes to put into the washing machine and picked up his dressing gown to get the stuff underneath it.
In his pocket I found 23 chocolate wrappers from the Quality Street tin - which I've since discovered he took the liberty of opening. It doesn't matter what it is, if he sees anything lying around (or even if he doesn't - he'll go looking for it!) he'll take it, and then lie about it.
It's not like we limit snacks or anything, both him and DS2 (who's incidentally has just turned 4, and can sit and stare at a stray chocolate/sweet all afternoon without so much as touching it - even when he knows its for him!) are big eaters so "set" meals are never an issue with him not finishing it.
What can we do? He knows that if he asks 99.99% of the time he'll get (unless it's 15 minutes before dinner, or just after brushing teeth before bed etc) so why does he still feel the need to steal them?? Especially as he has his own little box???