Preserve target-native cwd in permission approval requests (#42314)

## Why

Permission requests can originate in an environment whose path convention differs from the Codex host. Requiring the request working directory to be host-native prevents those requests from reaching interactive approval.

## What changed

- Carry the request `cwd` as a `LegacyAppPathString` through core events and the app-server protocol so the target environment's native representation is preserved.
- Convert the preserved value back to a `PathUri` when materializing permission grants.
- Regenerate the JSON and TypeScript protocol schemas for the updated `cwd` type.

## Testing

- Exercise the app-server permission request round trip with a target-native working directory across host path conventions.
- Verify remote permission requests retain their environment working directory and granted access still unblocks later execution.

GitOrigin-RevId: 97dc9707d9048883d20bab1b69c93871039f3188
This commit is contained in:
iceweasel-oai
2026-09-02 17:27:50 +00:00
committed by copyberry
parent 1bc8fb16ae
commit eb078b4f44
18 changed files with 44 additions and 50 deletions
@@ -779,7 +779,7 @@ pub struct PermissionsRequestApprovalParams {
/// Unix timestamp (in milliseconds) when this approval request started.
#[ts(type = "number")]
pub started_at_ms: i64,
pub cwd: AbsolutePathBuf,
pub cwd: LegacyAppPathString,
pub reason: Option<String>,
pub permissions: RequestPermissionProfile,
}
@@ -743,7 +743,10 @@ fn permissions_request_approval_uses_request_permission_profile() {
}))
.expect("permissions request should deserialize");
assert_eq!(params.cwd, absolute_path("repo"));
assert_eq!(
params.cwd,
LegacyAppPathString::from_abs_path(&absolute_path("repo"))
);
assert_eq!(params.environment_id.as_deref(), Some("remote"));
assert_eq!(
params.permissions,