The problem is not that the primary exchange is sometimes required. That has always been the case with a small number of stocks (eg ALTR). The problem is that there doesn't seem to be any way to tell in advance -- ie without trial and error -- that the primary exchange is required for a particular stock.
Before November 2013 only a very small number of stocks required the primary exchange (in addition to, eg, SMART). But in November primary exchange is now required for three very popular stocks: MSFT, CSCO, INTC.
How on earth were we meant to know that suddenly a primary exchange must be specified for these stocks? In "contract info" in TWS the primary exchange is listed for these stocks, but it is for every other stock as well, so that doesn't tell you whether you need to use it or not.
Currently as far as I can see the only way to know if a primary exchange is required is to wait until a quote request fails, and then to try and work out why. If anybody knows how to tell -- in advance, before quote requests fail-- when a primary exchange must be specified, I'd love to know.