I found that I can use process breakpoints for this and set it using term-exec-hook
(add-hook 'term-exec-hook (lambda () (let* ((buff (current-buffer)) (proc (get-buffer-process buff))) (lexical-let ((buff buff)) (set-process-sentinel proc (lambda (process event) (if (string= event "finished\n") (kill-buffer buff))))))))
source share