OrbitWake for VS Code
Authentification
L’extension VS Code ne réutilise pas directement la session navigateur OrbitWake. Elle crée une session IDE dédiée à partir d’un code de pairing à usage unique, puis utilise un token Bearer stocké localement dans VS Code SecretStorage pour authentifier les requêtes IDE.
Modèle d’authentification
Le flux sépare volontairement trois éléments :
| Élément | Rôle |
|---|---|
| Session web OrbitWake | Permet de créer et gérer les codes de pairing ainsi que les sessions IDE. |
| Code de pairing | Autorisation courte et à usage unique utilisée pour créer une session IDE. |
| Token IDE | Credential durable de la session VS Code, utilisé comme Bearer token sur les endpoints IDE. |
Créer un code de pairing
Dans OrbitWake, ouvrez Settings → IDEs puis choisissez Pair an IDE.
Le backend exige une session web OrbitWake authentifiée. Il récupère le workspace principal de l’utilisateur puis crée un code lisible au format :
ABCD-EFGH
Le code contient huit caractères issus d’un alphabet qui évite certains caractères ambigus.
Le code expire après 10 minutes.
Code à usage unique
Un code de pairing ne peut être consommé qu’une seule fois.
Lorsqu’un nouveau code est créé pour le même utilisateur, les anciens codes encore actifs sont immédiatement expirés.
Côté serveur, le code n’est pas conservé en clair : OrbitWake stocke son hash SHA-256 et compare le hash du code fourni lors du claim.
Réclamer le code depuis VS Code
Dans VS Code, exécutez :
OrbitWake: Connect IDE
L’extension demande le code puis envoie au backend :
- le code de pairing ;
- le nom de l’appareil ;
- le nom de l’éditeur ;
- la version de VS Code ;
- un identifiant machine dérivé localement.
Le claim n’utilise pas la session navigateur. Le code valide sert lui-même de preuve d’autorisation temporaire.
Identifiant de machine
L’extension dérive un identifiant à partir du hostname, de la plateforme et de l’architecture, puis le passe dans SHA-256 avant l’envoi.
Le serveur ne stocke pas cette valeur directement : il la hash à nouveau avant enregistrement avec la session IDE.
Cet identifiant sert à associer la session à un appareil ; il n’est pas utilisé comme secret d’authentification.
Création de la session IDE
Si le code existe, n’a pas expiré et n’a pas encore été utilisé, OrbitWake crée une entrée de session IDE liée au workspace et à l’utilisateur.
Le serveur génère un token aléatoire à partir de 32 octets cryptographiquement aléatoires, puis retourne ce token une seule fois à l’extension.
Après création de la session, le code de pairing est marqué comme utilisé.
Stockage du token
Le token brut n’est pas enregistré dans la base OrbitWake.
Côté serveur, seul son hash SHA-256 est stocké dans la session IDE. Côté éditeur, le token brut est conservé dans VS Code SecretStorage sous la clé interne OrbitWake.
Le token n’est donc pas censé être placé dans un fichier du workspace, une variable .env ou un fichier de configuration utilisateur en clair.
Authentification des requêtes IDE
Ask et Agent envoient le token dans le header HTTP :
Authorization: Bearer <ide-token>
Le backend extrait le Bearer token, calcule son hash et recherche une session IDE correspondante.
La session doit être :
- présente ;
- dans l’état
active; - non révoquée ;
- liée à un utilisateur et un workspace existants.
Une requête authentifiée met à jour la date last_seen_at de la session.
Ce que signifie “Connected” dans VS Code
Dans la build actuelle, le panneau VS Code considère localement l’éditeur comme connecté lorsqu’un token OrbitWake existe dans SecretStorage.
Cet indicateur n’effectue pas une validation serveur à chaque affichage du panneau.
Une session révoquée depuis OrbitWake peut donc encore apparaître localement comme “connected” jusqu’à ce qu’une requête soit envoyée. Le serveur rejettera alors le token.
Erreur 401 : authentification IDE invalide
Les endpoints Ask et Agent retournent 401 avec IDE authentication required. lorsque la session IDE ne peut pas être authentifiée.
Les causes typiques sont :
| Cause | Action |
|---|---|
| Token local absent | Reconnecter l’IDE avec un nouveau code de pairing. |
| Token incorrect | Supprimer la session locale puis effectuer un nouveau pairing. |
| Session révoquée | Créer une nouvelle session IDE. |
| Session non active | Reconnecter l’éditeur. |
Erreur 403 : pairé mais non autorisé pour l’AI IDE
Une authentification IDE valide ne garantit pas automatiquement l’accès aux fonctions AI.
Après authentification, les endpoints Ask et Agent vérifient également l’éligibilité du compte.
Dans cette build, les private testers sont autorisés directement ; sinon le compte doit avoir un statut private beta actif.
Un éditeur peut donc être correctement pairé mais recevoir :
403 OrbitWake IDE AI is not available for this account.
ou l’équivalent Agent si l’accès n’est pas activé.
Session web et session IDE sont différentes
La session navigateur OrbitWake utilise les mécanismes d’authentification du site. Elle permet notamment de créer un pairing code et de gérer les sessions connectées.
La session VS Code utilise son propre token IDE Bearer.
Se déconnecter du site dans le navigateur ne supprime pas automatiquement le token déjà stocké dans VS Code. À l’inverse, OrbitWake: Disconnect IDE ne déconnecte pas la session web OrbitWake.
Voir les éditeurs connectés
Dans Settings → IDEs, OrbitWake liste les sessions IDE actives de l’utilisateur.
Pour chaque session, l’interface peut afficher :
- le nom de l’appareil ;
- le nom de l’éditeur ;
- la version de l’éditeur ;
- la date de dernière activité.
La liste ne retourne que les sessions actives et non révoquées.
Révoquer une session depuis OrbitWake
Le bouton Revoke dans Settings → IDEs marque la session comme révoquée et enregistre l’heure de révocation.
Après révocation, le hash du token ne correspond plus à une session utilisable pour les endpoints IDE.
Cette action est utile lorsqu’un ordinateur n’est plus utilisé, a été perdu, ou lorsqu’un token local doit être invalidé sans accès à la machine.
Déconnecter depuis VS Code
La commande OrbitWake: Disconnect IDE supprime le token de SecretStorage local et efface une éventuelle proposition Agent en attente dans l’extension.
Dans cette implémentation, la commande locale ne déclenche pas elle-même la révocation de la session correspondante côté serveur.
Pour invalider aussi la session serveur, utilisez Revoke dans Settings → IDEs.
Erreurs de pairing
| Erreur | Interprétation |
|---|---|
Authentication required. | La création du code dans OrbitWake nécessite une session web authentifiée. |
Unable to create an IDE pairing code. | Le serveur n’a pas pu créer le code, par exemple si aucun workspace principal n’est disponible. |
Pairing code is invalid or expired. | Le code est incorrect, expiré, déjà utilisé ou remplacé par un code plus récent. |
Résumé sécurité
| Protection | Implémentation actuelle |
|---|---|
| Durée du pairing | 10 minutes. |
| Réutilisation du pairing | Interdite après claim. |
| Stockage du code serveur | Hash SHA-256. |
| Token de session | 32 octets aléatoires, encodés en base64url. |
| Stockage token serveur | Hash SHA-256 uniquement. |
| Stockage token VS Code | SecretStorage. |
| Révocation | Possible depuis Settings → IDEs. |
| Transmission | Bearer token vers les endpoints HTTPS OrbitWake. |
Limites actuelles
Le token IDE n’a pas actuellement une date d’expiration autonome documentée dans le runtime ; il reste utilisable tant que la session est active et non révoquée.
Le panneau ne valide pas le token auprès du serveur à chaque affichage de l’état Connected.
Le pairing lie la session au workspace principal résolu pour l’utilisateur au moment de sa création ; la documentation ne promet pas encore un sélecteur de workspace au moment du pairing.
Le contrôle d’éligibilité beta est distinct de l’authentification et peut refuser Ask/Agent même lorsque la session IDE est valide.
Étape suivante
Une fois l’IDE authentifié, utilisez les commandes OrbitWake pour connecter, déconnecter et envoyer une sélection de code vers le panneau.