   ; Really start process
   (let ((binary      (merlin-command))
         (flags       (merlin-lookup 'flags merlin-buffer-configuration))
-        (process-environment (merlin-lookup 'env merlin-buffer-configuration))
+        (process-environment (copy-list process-environment))
         ; FIXME use logfile
         (logfile     (or (merlin-lookup 'logfile merlin-buffer-configuration)
                          merlin-logfile))

    ;; When disabling merlin
    (progn
      (when merlin-highlight-overlay
	(delete-overlay merlin-highlight-overlay))
      (remove-overlays nil nil 'merlin-kind 'highlight)
      (remove-overlays nil nil 'merlin-kind 'error))))


        (packages    (merlin--map-flatten (lambda (x) (cons "-package" x))
                                          merlin-buffer-packages))
        )
    ;; Update environment
    (dolist (binding (merlin-lookup 'env merlin-buffer-configuration))
      (let* ((equal-pos (string-match "=" binding))
             (prefix (if equal-pos
                       (substring binding 0 (1+ equal-pos))
                       binding))
             (is-prefix (lambda (x) (string-prefix-p prefix x))))
        (setq process-environment (delete-if is-prefix process-environment))
        (when equal-pos
          (setq process-environment (cons binding process-environment)))))
    ;; Compute verbosity
    (when (eq merlin/verbosity-context t)
        (setq merlin/verbosity-context (cons command args)))
