Skip to content

Instantly share code, notes, and snippets.

@dai
Last active February 26, 2026 01:15
Show Gist options
  • Select an option

  • Save dai/d1f0b4a579b96e0716da643b5e8ada4d to your computer and use it in GitHub Desktop.

Select an option

Save dai/d1f0b4a579b96e0716da643b5e8ada4d to your computer and use it in GitHub Desktop.
Re-Sessions

AI Coding Toolsセッション管理 (Codex/Claude/Copilot/Pi 対応)

Windowsにおけるpwsh(Powershell 5~)からcoding toolsを使った場合、前回のセッションから起動するスクリプトです。

Codex CLI, Claude CLI, Copilot CLI, Piに対応してます。

Motivations

通常セッションの保存を行うと次回起動時にそのセッションを続けられるような設定はあるべきです。

ただし、複数のツールを使用する場合、自動設定は行うべきではありません。

そこでこのscriptをpwshの設定ファイルに加えることで、起動を高速に、かつツールの選択を可能にします。

Get Started

pwsh設定ファイルの場所、Windowsの既定(デフォルト)では

C:\Users\name\Documents\Powershell

以下に Microsoft.PowerShell_profile.ps1 というファイル名で存在します。

その末尾に以下のコードを貼り付けて、pwshを再起動します。

各ツールの呼び出しに -re を付与することで前回のセッションを呼び出します。

例: codex**-re** , pi**-re**

終了時にはそのセッションを保存します。

# AIセッション管理 (Codex/Claude/Copilot/Pi 対応)
function Get-LatestSessionId {
param([string]$Tool, [string]$SessionsRoot)
if (-not (Test-Path $SessionsRoot)) { return $null }
$latest = Get-ChildItem -Path $SessionsRoot -Recurse -Filter "*.jsonl" |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
if (-not $latest) { return $null }
if ($latest.Name -match '([0-9a-fA-F-]{36})\.jsonl$') { return $Matches[1] }
return $null
}
function codex-re {
$root = Join-Path $env:USERPROFILE ".codex\sessions"
$id = Get-LatestSessionId -Tool "codex" -SessionsRoot $root
if ($id) { codex resume $id } else { Write-Host "No session found" }
}
function claude-re {
$root = Join-Path $env:USERPROFILE ".claude\sessions"
$id = Get-LatestSessionId -Tool "claude" -SessionsRoot $root
if ($id) { claude resume $id } else { Write-Host "No session found" }
}
function copilot-re {
$root = Join-Path $env:USERPROFILE ".copilot\sessions"
$id = Get-LatestSessionId -Tool "copilot" -SessionsRoot $root
if ($id) { copilot resume $id } else { Write-Host "No session found" }
}
function pi-re {
$root = Join-Path $env:USERPROFILE ".pi\agent\sessions"
$id = Get-LatestSessionId -Tool "pi" -SessionsRoot $root
if ($id) { pi resume $id } else { Write-Host "No session found" }
}
# シェル終了時にセッション保存
$global:AI_SESSION_TOOLS = @("codex", "claude", "copilot", "pi")
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
foreach ($tool in $global:AI_SESSION_TOOLS) {
if (Get-Command $tool -ErrorAction SilentlyContinue) {
& $tool exit 2>$null
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment