diff --git a/src/app/authorisation.service.ts b/src/app/authorisation.service.ts
index 402efd2a3ae71e2d085ea244df1e206fb44ae92c..c872c7ef71902131d6e2aad37f2bcf907c8e5c32 100644
--- a/src/app/authorisation.service.ts
+++ b/src/app/authorisation.service.ts
@@ -45,6 +45,7 @@ export class AuthorisationService {
   public loggedin$: BehaviorSubject<number>;
   public loggedout$: BehaviorSubject<number>;
   public sessionToken: string | null = null
+  public sessionToken$: BehaviorSubject<string|null> = new BehaviorSubject(null);
   public availableKeys$: BehaviorSubject<any>;
 
   private backendURI: string;
@@ -83,7 +84,7 @@ export class AuthorisationService {
       filter((v) => v !== null && v !== undefined),
       take(1),
       switchMap((v) => this.getSessionToken(v))
-    ).subscribe((v) => { this.sessionToken = v; console.log('sub session token is',this.sessionToken); window.localStorage.setItem('strudel2_session', v); this.refresh() } );
+    ).subscribe((v) => { this.sessionToken = v; this.sessionToken$.next(v); console.log('sub session token is',this.sessionToken); window.localStorage.setItem('strudel2_session', v); this.refresh() } );
     
     // every time the list of certs/keys changes update the list of whats logged in and out
     // sshAuthzServers$ won't really "change" except that it needs to be retrieved first time
@@ -151,7 +152,7 @@ public logout() {
     tap((v) => this.sessionToken = null),
     switchMap((v) => this.getSessionToken(this.backendURI))
   ).
-    subscribe((v) =>{ this.sessionToken = v ; window.localStorage.setItem('strudel2_session',v) ; this.refresh() } )
+    subscribe((v) =>{ this.sessionToken = v ; this.sessionToken$.next(v); window.localStorage.setItem('strudel2_session',v) ; this.refresh() } )
 }
 
 private getSessionToken(apiserver: any): Observable<any> {
@@ -248,6 +249,7 @@ private getSessionToken(apiserver: any): Observable<any> {
    }
    if (error.stats == 401) {
     this.sessionToken = null;
+    this.sessionToken$.next(null);
     console.log('session expired, why hasnt it refreshed automatically?')
    }
    this.notifications.notify("Error querying ssh agent");
@@ -275,7 +277,7 @@ private getSessionToken(apiserver: any): Observable<any> {
    }
 
    let headers = new HttpHeaders({
-    'Authorization': `Bearer ${this.sessionToken}`
+    'Authorization': `Bearer ${this.sessionToken$.value}`
   });
    let options = { headers: headers, withCredentials: true};
    let agentquery$ = this.http.get<any>(apiserver+'/sshagent',options)
@@ -305,11 +307,11 @@ private getSessionToken(apiserver: any): Observable<any> {
  private killAgent() {
    this.notifications.notify("Logging out")
    var anyvar: any;
-   if (this.sessionToken === null) {
+   if (this.sessionToken$.value === null) {
     return throwError('cant get the agent contents without a session');
    }
    let headers = new HttpHeaders({
-    'Authorization': `Bearer ${this.sessionToken}`
+    'Authorization': `Bearer ${this.sessionToken$.value}`
   });
   let options = { headers: headers, withCredentials: true};
 
@@ -364,8 +366,8 @@ private getSessionToken(apiserver: any): Observable<any> {
       tap(([key,cert,token]) => this.logout_sshauthz(token.sshauthzservice)),
     );
 
-    let agent$ = combineLatest([keycert$.pipe(filter((v) => v !== null)),apiserver$]).pipe(
-      switchMap(([keycert,apiserver]) => this.addCert(keycert,apiserver)),
+    let agent$ = combineLatest([keycert$.pipe(filter((v) => v !== null)),apiserver$,this.sessionToken$.pipe(filter((v) => v !== null))]).pipe(
+      switchMap(([keycert,apiserver,sessionToken]) => this.addCert(keycert,apiserver)),
       tap((v) => this.refresh()),
       tap((v)=>console.log('posted cert to agent',v)),
       //switchMap((_) => this.updateAgentContents()),
@@ -438,14 +440,14 @@ private getSessionToken(apiserver: any): Observable<any> {
         return this.ipcService.addCert(data);
       } else {
 
-        console.log('adding the certificate, session token is ',this.sessionToken);
+        console.log('adding the certificate, session token is ',this.sessionToken$.value);
   
         if (this.sessionToken === null) {
           throwError('Session token is null how is this possible')
         }
   
         let headers = new HttpHeaders({
-          'Authorization': `Bearer ${this.sessionToken}`
+          'Authorization': `Bearer ${this.sessionToken$.value}`
         });
         let options = { headers: headers, withCredentials: true};
         let data = {'key': keyCert.key, 'cert': keyCert.cert};