The rupee weakened by 4 paise to close at 96.57 against the US dollar as elevated crude oil prices and weak domestic equities weighed on sentiment. Traders said likely RBI intervention helped limit losses despite heightened geopolitical tensions in West Asia