OSX seems to keep paths in /etc/paths and files in /etc/paths.d, programs launched from Terminal seem to pick this up but Emacs.app is not loaded from terminal so the path is kinda small. the problem was interacting with other programs via m-!, eshell, etc.
this seems to fix it, not sure if it's the right way tho.
(setenv "PATH"
(let ((osx-path-files
(append (mapcar (lambda (x) (concat "/etc/paths.d/" x))
(delete ".." (delete "." (directory-files "/etc/paths.d"))))
'("/etc/paths")))
(read-path-file
(lambda (file)
(when (file-readable-p file)
(delete ""
(split-string (with-temp-buffer (insert-file-contents file)
(buffer-substring (point-min) (point-max)))
"\n"))))))
(mapconcat 'identity
(reverse (delete-dups (reverse
(append (reduce 'append
(mapcar read-path-file osx-path-files))
(split-string (getenv "PATH") ":")))))
":")))