Write permissions to app/storage need to be granted to the Vagrant VM. The gotcha is you have to do this from the host machine:
chmod -R 777 app/storage
For some reason ~/.composer (or COMPOSER_HOME) will change ownership to root:root. This needs to be owned by the vagrant user:
chown vagrant:vagrant ~/.composer
If you're still getting an exception when running composer install
like this
file_put_contents(/home/vagrant/.composer/cache/repo/https---packagist.org/provider-laravel$laravel.json): failed to open stream: Permissisioni denied
Then completely delete the vendor/ directory.