{"record":{"id":"810f90e9f7cfaeb8","repo":"openai/codex","slug":"invalidinput-810f90","errorCode":"InvalidInput","errorMessage":"path `{path}` is not absolute","messagePattern":"path `(.+?)` is not absolute","errorType":"validation","errorClass":"io::Error","httpStatus":null,"severity":"error","filePath":"codex-rs/app-server-protocol/src/protocol/v2/permissions.rs","lineNumber":76,"sourceCode":"#[ts(export_to = \"v2/\")]\npub struct AdditionalFileSystemPermissions {\n    /// This will be removed in favor of `entries`.\n    pub read: Option<Vec<LegacyAppPathString>>,\n    /// This will be removed in favor of `entries`.\n    pub write: Option<Vec<LegacyAppPathString>>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    #[ts(optional)]\n    pub glob_scan_max_depth: Option<NonZeroUsize>,\n    #[serde(default, skip_serializing_if = \"Option::is_none\")]\n    #[ts(optional)]\n    pub entries: Option<Vec<FileSystemSandboxEntry>>,\n}\n\nfn permission_path_uri(path: LegacyAppPathString) -> io::Result<PathUri> {\n    if let Ok(path) = AbsolutePathBuf::try_from(path.clone()) {\n        return Ok(path.into());\n    }\n    PathUri::try_from(path).map_err(|err| io::Error::new(io::ErrorKind::InvalidInput, err))\n}\n\n// TODO(anp): Remove this conversion once core permission paths use PathUri.\nimpl From<CoreFileSystemPermissions> for AdditionalFileSystemPermissions {\n    fn from(value: CoreFileSystemPermissions) -> Self {\n        if let Some(LegacyReadWriteRoots { read, write }) = value.legacy_read_write_roots() {\n            let mut entries = Vec::with_capacity(\n                read.as_ref().map_or(0, Vec::len) + write.as_ref().map_or(0, Vec::len),\n            );\n            if let Some(paths) = read.as_ref() {\n                entries.extend(paths.iter().map(|path| FileSystemSandboxEntry {\n                    path: FileSystemPath::Path {\n                        path: LegacyAppPathString::from_abs_path(path),\n                    },\n                    access: FileSystemAccessMode::Read,\n                }));\n            }\n            if let Some(paths) = write.as_ref() {","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/openai/codex/blob/339751715c64496cb86246bfb3935f40e309dd3d/codex-rs/app-server-protocol/src/protocol/v2/permissions.rs#L58-L94","documentation":"Error \"path `{path}` is not absolute\" thrown in openai/codex.","triggerScenarios":"Thrown at codex-rs/app-server-protocol/src/protocol/v2/permissions.rs:76 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"339751715c64496cb86246bfb3935f40e309dd3d","analyzedAt":"2026-08-25T05:35:09.876Z","schemaVersion":2},"datasetVersion":"2026-08-25T06:17:31.827Z"}