I would book direct since BA do a price match service. Otherwise you can run into unforseen problmes. For example, I have just booked a longhaul flight I found on skyscanner and the discount was £160 per person. Since I was booking a number of seats, it was a no brainer. Confirmation email all looked ok mentioned BA etc. However, when the etickets arrived, I discovered that the agent had booked a codeshare through a oneworld partner and hidden this. The downside of this is that BA won't let me upgrade the return leg using avios (not that there were any available so no loss). We live and learn