diff --git a/deadlock-plugins/deadlock-extension/src/core/controller.ts b/deadlock-plugins/deadlock-extension/src/core/controller.ts
index 5541b40178643dcac5f90fafa2120fd38a281845..a60950a5a6948b8e416bd96dc8752907e825b035 100644
--- a/deadlock-plugins/deadlock-extension/src/core/controller.ts
+++ b/deadlock-plugins/deadlock-extension/src/core/controller.ts
@@ -18,11 +18,13 @@ import { getReviewedStudentWorkdirPath } from './utils/mission.utils';
 import { join } from 'path';
 import Mission from '../model/mission';
 import ApiService from './api.service';
+import StartedMissionsView from '../view/startedMissionsView';
 
 export default class Controller {
   private static _instance: Controller;
   private briefingView?: BriefingView;
   private quickSetupView: QuickSetupView;
+  public readonly startedMissions?: StartedMissionsView;
 
   public constructor(public readonly context: ExtensionContext) {
     if (Controller._instance) {
@@ -31,6 +33,8 @@ export default class Controller {
     Controller._instance = this;
     if (isDocker()) {
       this.briefingView = new BriefingView();
+    } else {
+      this.startedMissions = new StartedMissionsView();
     }
     this.quickSetupView = new QuickSetupView();
 
diff --git a/deadlock-plugins/deadlock-extension/src/extension.ts b/deadlock-plugins/deadlock-extension/src/extension.ts
index 093a4d10fb36a6db2c6dce4c140f0e8ff2089300..95cd3b2cfedd9a3fc9f826d85f5c4981e962a3a7 100644
--- a/deadlock-plugins/deadlock-extension/src/extension.ts
+++ b/deadlock-plugins/deadlock-extension/src/extension.ts
@@ -4,7 +4,6 @@ import Recorder from './recorder/recorder';
 import { extensionError as error } from './recorder/utils/log';
 import { DepNodeProvider } from './view/deadlockPanel';
 import { CommandTreeProvider } from './view/CommandTree';
-import StartedMissionsView from './view/startedMissionsView';
 import Controller from './core/controller';
 
 export async function activate(context: ExtensionContext) {
@@ -15,8 +14,9 @@ export async function activate(context: ExtensionContext) {
   if (!workspaceFolders) window.showInformationMessage('Pas de répertoires ouverts');
   const deadlockPanelProvider = new DepNodeProvider();
   window.registerTreeDataProvider('deadlockPanel', deadlockPanelProvider);
-  window.registerWebviewViewProvider('startedMissions', new StartedMissionsView());
-
+  if (Controller.instance.startedMissions) {
+    window.registerWebviewViewProvider('startedMissions', Controller.instance.startedMissions);
+  }
   if (isDocker()) {
     commands.executeCommand('setContext', 'deadlock.inContainer', true);
     window.registerTreeDataProvider('commandTree', new CommandTreeProvider());
diff --git a/deadlock-plugins/deadlock-extension/src/view/startedMissionsView.ts b/deadlock-plugins/deadlock-extension/src/view/startedMissionsView.ts
index dda4a28edbedd42f61f15f8d1c9b1aebe54da196..e52d9943da5573cd25aca571a122621417e1d2a1 100644
--- a/deadlock-plugins/deadlock-extension/src/view/startedMissionsView.ts
+++ b/deadlock-plugins/deadlock-extension/src/view/startedMissionsView.ts
@@ -6,10 +6,36 @@ import Controller from '../core/controller';
 import { extensionWarn } from '../recorder/utils/log';
 import { getUri } from './webviewBase';
 import { missionWorkdir } from '../core/config';
+import { watch } from 'chokidar';
 import UserMission from '../core/mission/model/userMission';
 import { getExtensionUri } from '../recorder/utils/workdir';
+
 export default class StartedMissionsView implements WebviewViewProvider {
+  constructor() {
+    if (existsSync(missionWorkdir)) {
+      console.log('Watching mission directory');
+      const watcher = watch(missionWorkdir, {
+        ignoreInitial: true,
+        ignorePermissionErrors: true,
+        depth: 3,
+      });
+      watcher.on('all', (event, path) => {
+        if (event === 'add' || event === 'unlink' || (event === 'change' && path.includes('user-challenge.json'))) {
+          if (this.webviewView?.webview.html) {
+            this.webviewView.webview.html = this._getHtmlForWebview(this.webviewView?.webview);
+          }
+        }
+      });
+    }
+  }
+  private webviewView?: WebviewView;
+  public refresh(): void {
+    if (this.webviewView) {
+      this.webviewView.webview.html = this._getHtmlForWebview(this.webviewView?.webview);
+    }
+  }
   resolveWebviewView(webviewView: WebviewView): void | Thenable<void> {
+    this.webviewView = webviewView;
     webviewView.webview.options = {
       enableScripts: true,
       localResourceRoots: [getExtensionUri()],