aider
Install command:
brew install aiderAI pair programming in your terminal
License: Apache-2.0
Development: Pull requests
Formula JSON API: /api/formula/aider.json
Formula code: aider.rb on GitHub
Bottle (binary package) installation support provided for:
| macOS on Apple Silicon |
golden gate | ✅ |
|---|---|---|
| tahoe | ✅ | |
| sequoia | ✅ | |
| Linux | ARM64 | ✅ |
| x86_64 | ✅ |
Current versions:
| stable | ✅ | 0.86.2 |
| head | ⚡️ | HEAD |
Depends on:
| certifi | 2026.10.19 | Mozilla CA bundle for Python |
| freetype | 2.15.0 | Software library to render fonts |
| gcc | 16.2.0 | GNU compiler collection |
| jpeg-turbo | 3.2.0 | JPEG image codec that aids compression and decompression |
| libyaml | 0.2.5 | YAML Parser |
| openblas | 0.3.34 | Optimized BLAS library |
| python@3.12 | 3.12.15 | Interpreted, interactive, object-oriented programming language |
Depends on when building from source:
| ninja | 1.13.2 | Small build system for use with gyp or CMake |
| pkgconf | 3.0.10 | Package compiler and linker metadata toolkit |
| rust | 1.99.1 | Safe, concurrent, practical language |
Uses from macOS: libffi
Binaries:
aider
Known vulnerabilities in the current version:
| GHSA-w8v5-vhqr-4h9v | DiskCache has unsafe pickle deserialization |
| GHSA-59cr-6r3x-644w | GitPython submodule update path traversal can write outside the repository |
| CVE-2026-10175 | Aider-AI Aider Architect Mode auth.py editor_coder.run code injection |
| CVE-2026-10177 | Aider-AI Aider AWS EC2 Metadata Endpoint api_docs.py requests.get server-side request forgery |
| GHSA-27vj-qcqg-25rc (high) | fsspec: Server-Side Template Injection in ReferenceFileSystem leads to Remote Code Execution |
| GHSA-54p9-h82j-f925 (medium) | Multidict: Reference leak in CIMultiDict/MultiDict items-view union and subtraction |
| GHSA-494j-54xm-rwp3 | AIOHTTP: Secure attribute not enforced for shared cookie |
| GHSA-5wr8-gcqf-gqf3 | aiohttp server lacks an initial request/header timeout |
| GHSA-6cjc-53gc-5rqm | AIOHTTP: Connector pool exhaustion via Max-Age overflow |
| GHSA-9xw5-w5jj-pvcg | AIOHTTP: File descriptor exhaustion in multipart requests |
| GHSA-f9xw-jh8m-3mwq | AIOHTTP: Absolute-form request targets can spoof Request.scheme |
| GHSA-gx76-c99x-2c96 | AIOHTTP: Cookie from subdomain can remove Host-Only Scope from existing cookies |
| GHSA-pqxq-w44r-73xw | AIOHTTP: Pure-Python parser request smuggling |
| GHSA-22hg-r758-rrw9 | Pillow: Infinite loop in MIC n_frames when the embedded TIFF |
| GHSA-254f-3936-288h | Pillow: PdfParser can recurse without limit in get_value() and linearize_page_tree() |
| GHSA-27h8-gf7j-v5hc | Pillow: NULL dereference in ImagingExpand via rank filters on zero-size images |
| GHSA-332p-7hrc-92wf | Pillow: Heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO |
| GHSA-4558-3h8r-v8xp | Pillow: P;2L and P;4L decoders may read 1 to 3 bytes past the passed buffer size |
| GHSA-462x-pgg6-55fp (medium) | Pillow tiled-TIFF decoder reads past tile buffer in copy4 (Unpack.c:1290) |
| GHSA-4rr5-89j8-mwwm (medium) | Pillow: Heap use-after-free when encoding TIFF to an in-memory buffer |
| GHSA-58r4-6rv3-gfh8 | Pillow: Out-of-bounds access in _imagingmorph on a zero-width image |
| GHSA-5xm2-6676-qcp9 | Pillow: APNG background disposal allocates full canvas before decompression bomb check |
| GHSA-65qm-jvmh-6pqg | Pillow: GIF seek keeps rejected size after DecompressionBombError, allowing DoS |
| GHSA-74r2-7ff9-mjj2 | Pillow: Quadratic GIF comment concatenation allows DoS in Image.open() |
| GHSA-7mwm-ghpf-9vrm | Pillow: Double free in ImagingScaleAffine on calloc failure via Image.transform |
| GHSA-8g5g-8vmr-9782 | Pillow: Heap buffer overflow in ImagingJpegDecode |
| GHSA-c6hw-5grf-ff96 | Pillow: OOB read in TiffDecode.c tile and RGBA paths leaks heap memory into pixels |
| GHSA-cp9v-662q-vvx9 | Pillow: NULL pointer dereference in Image.merge via an unvalidated band 0 |
| GHSA-f2g6-542v-9j58 | Pillow: Infinite loop in PdfParser.rewrite_pages on page tree Parent cycle |
| GHSA-fc9g-5qg7-mf45 | Pillow: Quadratic GIF comment copying during save |
| GHSA-gg2r-wvfm-q9rx | Pillow: MSP RLE decoder expands a tiny file into unbounded memory |
| GHSA-j4m9-6w36-pw47 | Pillow: Invalid free in FreeType glyph rendering when a stroker is active |
| GHSA-jg86-v3jv-hrpm | Pillow: Quadratic-time DoS in PDF save_all (PdfParser.next_object_id) |
| GHSA-p4wg-p73j-c528 | Pillow: Unbounded recursion parsing a PDF page tree or trailer chain (incomplete fix for CVE-2026... |
| GHSA-pchr-8j38-3x4p | Pillow: TIFF encoder ColorMap plane-size mismatch causes a heap out-of-bounds read |
| GHSA-q45j-58j2-45rg | Pillow: TiffDecode returns uninitialized memory as pixels for short JPEG strips |
| GHSA-rfgq-q3w2-pmv2 | Pillow: Image.quantize() with empty palette leaks uninitialized stack memory |
| GHSA-vx6w-vv9f-6gvg | Pillow: EPS load(scale) lets Ghostscript render past the decompression bomb limit |
| GHSA-w889-685w-c8fh | Pillow: Argument Injection in Ghostscript call, potentially leading into RCE |
| GHSA-xgh8-jp6q-p5x8 | Pillow: ReDoS in XbmImagePlugin: 512-byte file stalls Image.open() for minutes |
| GHSA-xvh5-g6gv-559v | Pillow: Memory disclosure and segfault in libtiff encoder via crafted TIFF tags |
| GHSA-qmf3-4767-5fg3 (medium) | LiteLLM: M2M JWT Handler Has Improper Authorization |
| GHSA-mf52-j94g-746m (medium) | LiteLLM: PROXY_ADMIN database API Key Generator Has Insufficient Session Expiration |
| GHSA-4jcj-7x88-m979 (high) | LiteLLM: MCP Proxy Has Improper Authentication |
| GHSA-j37q-q7p9-vpwm (high) | LiteLLM: SSO Debug Flow Has Improper Authentication |
| GHSA-w2mh-qq9q-453x (medium) | BerriAI litellm: SSO Login Does Not Invalidate Previous UI Session Tokens |
| GHSA-p897-vf7j-f5h8 (medium) | BerriAI litellm has Security Feature Bypass in BannedKeywords and AzureContentSafety Guardrails v... |
| GHSA-c693-x898-5g4h (medium) | BerriAI litellm has SSRF via Unvalidated spec_path URL in MCP OpenAPI Spec Loader |
| GHSA-m2v5-74w2-qhcj (medium) | BerriAI litellm: UI User Enumeration leads to System-Wide Information Disclosure |
| GHSA-w2fm-2cpv-w7v5 | aiohttp allows unlimited trailer headers, leading to possible uncapped memory usage |
| GHSA-gc5v-m9x4-r6x2 (medium) | Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility function |
| GHSA-mf9w-mj56-hr94 (medium) | python-dotenv: Symlink following in set_key allows arbitrary file overwrite via cross-device rena... |
| GHSA-hcc4-c3v8-rx92 | AIOHTTP Affected by Denial of Service (DoS) via Unbounded DNS Cache in TCPConnector |
| GHSA-2vrm-gr82-f7m5 | AIOHTTP has CRLF injection through multipart part content type header construction |
| GHSA-p998-jp59-783m | AIOHTTP affected by UNC SSRF/NTLMv2 Credential Theft/Local File Read in static resource handler o... |
| GHSA-m5qp-6w8w-w647 (high) | AIOHTTP has a Multipart Header Size Bypass |
| GHSA-3wq7-rqq7-wx6j | AIOHTTP has late size enforcement for non-file multipart fields causes memory DoS |
| GHSA-966j-vmvw-g2g9 (medium) | AIOHTTP leaks Cookie and Proxy-Authorization headers on cross-origin redirect |
| GHSA-mwh4-6h8g-pg8w | AIOHTTP has HTTP response splitting via \r in reason phrase |
| GHSA-63hf-3vf5-4wqf (critical) | AIOHTTP's C parser (llhttp) accepts null bytes and control characters in response header values -... |
| GHSA-c427-h43c-vf67 | AIOHTTP accepts duplicate Host headers |
| GHSA-jg22-mg44-37j8 (medium) | AIOHTTP is Vulnerable to Deserialization of Untrusted Data |
| GHSA-53mr-6c8q-9789 | LiteLLM: Privilege escalation via unrestricted proxy configuration endpoint |
| GHSA-jjhc-v7c2-5hh6 | LiteLLM: Authentication bypass via OIDC userinfo cache key collision |
| GHSA-6wvf-77m9-58rm (critical) | LiteLLM vulnerable to server-side template injection in the /prompts/test endpoint |
| GHSA-whj4-6x5x-4v2j (high) | FITS GZIP decompression bomb in Pillow |
| GHSA-wxxx-gvqv-xp7p (high) | LiteLLM has a sandbox escape in custom-code guardrail |
| GHSA-xqmj-j6mv-4862 | LiteLLM: Server-Side Template Injection in /prompts/test endpoint |
| GHSA-rpm5-65cw-6hj4 (high) | GitPython has Command Injection via Git options bypass |
| GHSA-v4p8-mg3p-g94g (high) | LiteLLM: Authenticated command execution via MCP stdio test endpoints |
| GHSA-x2qx-6953-8485 (high) | GitPython: Unsafe option check validates multi_options before shlex.split transformation |
| GHSA-wjx4-4jcj-g98j (medium) | Pillow has an integer overflow when processing fonts |
| GHSA-5xmw-vc9v-4wf2 (medium) | Pillow has a heap buffer overflow with nested list coordinates |
| GHSA-r73j-pqj5-w3x7 (medium) | Pillow has a PDF Parsing Trailer Infinite Loop (DoS) |
| GHSA-pwv6-vv43-88gr | Pillow has an OOB Write with Invalid PSD Tile Extents (Integer Overflow) |
| GHSA-7545-fcxq-7j24 (high) | GitPython reference APIs has a path traversal vulnerability that allows arbitrary file write and ... |
| GHSA-v87r-6q3f-2j67 (high) | GitPython: Newline injection in config_writer().set_value() enables RCE via core.hooksPath |
| GHSA-qccp-gfcp-xxvc (medium) | urllib3: Sensitive headers forwarded across origins in proxied low-level redirects |
| GHSA-mf9v-mfxr-j63j (high) | urllib3: Decompression-bomb safeguards bypassed in parts of the streaming API |
| GHSA-5239-wwwm-4pmq (low) | Pygments has Regular Expression Denial of Service (ReDoS) due to Inefficient Regex for GUID Matching |
| GHSA-65pc-fj4g-8rjx (medium) | Internationalized Domain Names in Applications (IDNA): Specially crafted inputs to idna.encode() ... |
| GHSA-qrc4-49gv-mv9m (high) | LiteLLM allows an authenticated internal_user to create API keys with access to routes that their... |
| GHSA-wpfp-gwwc-vwq6 (high) | LiteLLM allows a user to modify their own user_role via the /user/update endpoint |
| GHSA-hg6j-4rv6-33pg | AIOHTTP is vulnerable to cross-origin redirect with per-request cookies |
| GHSA-86qp-5c8j-p5mr (medium) | Starlette has missing Host header validation that poisons request.url.path, bypassing path-based ... |
| GHSA-x746-7m8f-x49c (medium) | Starlette: Arbitrary HTTP method dispatched to `HTTPEndpoint` attributes via `getattr` |
| GHSA-wqp7-x3pw-xc5r (high) | Starlette: SSRF and NTLM credential theft via UNC paths in StaticFiles on Windows |
| GHSA-4xpc-pv4p-pm3w (critical) | LiteLLM: Authentication Bypass via Host Header Injection |
| GHSA-2wc2-fm75-p42x (high) | Soup Sieve has Memory Exhaustion via Large Comma-Separated Selector Lists |
| GHSA-836r-79rf-4m37 (high) | Soup Sieve: Regular Expression Denial of Service (ReDoS) via Selector Parser |
| GHSA-m6qw-4cw2-hm4m | aiohttp: CRLF injection in multipart headers |
| GHSA-62p4-gmf7-7g93 | Pillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA ... |
| GHSA-8v84-f9pq-wr9x (high) | Pillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_che... |
| GHSA-5x94-69rx-g8h2 (high) | Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()` |
| GHSA-4fvr-rgm6-gqmc | aiohttp: HTTP/1 Pipelined Requests Queue Without Limit |
| GHSA-xcgm-r5h9-7989 | aiohttp: Incomplete websocket frame payloads bypass memory limits |
| GHSA-4m7w-qmgq-4wj5 | aiohttp: TLS Server Hostname Override Is Ignored When Reusing HTTPS Connections |
| GHSA-hpj7-wq8m-9hgp | aiohttp: DigestAuthMiddleware Applies Credentials to Cross-Origin Redirect Challenges |
| GHSA-63hw-fmq6-xxg2 | aiohttp: C HTTP Parser Bypasses max_line_size for Fragmented Lines |
| GHSA-g3cq-j2xw-wf74 | aiohttp: Unread Compressed Request Bodies Bypass client_max_size During Cleanup |
| GHSA-2fqr-mr3j-6wp8 | aiohttp: Host-Only Cookies Become Domain Cookies After CookieJar Persistence |
| GHSA-9x8q-7h8h-wcw9 | aiohttp: Payload Response Resources Are Not Closed After Mid-Body Disconnect |
| GHSA-jp82-jpqv-5vv3 (low) | Starlette: Unvalidated request path concatenated into authority poisons request.url.hostname |
| GHSA-82w8-qh3p-5jfq (high) | Starlette: request.form() limits silently ignored for application/x-www-form-urlencoded enable DoS |
| GHSA-45hq-cxwh-f6vc (high) | Pillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` — bomb protectio... |
| GHSA-phj9-mv4w-65pm (high) | Pillow `GdImageFile._open()`: image dimensions accepted without `_decompression_bomb_check()` |
| GHSA-4x4j-2g7c-83w6 (medium) | Pillow: WindowsViewer.get_command() OS command injection via unescaped shell path |
| GHSA-xj96-63gp-2gmr (high) | Pillow: Heap out-of-bounds write in `ImageFilter.RankFilter` via integer overflow in `ImagingExpand` |
| GHSA-fj7v-r99m-22gq (medium) | Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images |
| GHSA-6r8x-57c9-28j4 (high) | Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow |
| GHSA-jjj6-mw9f-p565 (high) | Pillow: Decompression Bomb DoS via PdfParser.PdfStream.decode() |
| GHSA-pg7v-jwj7-p798 (medium) | Pillow EpsImagePlugin negative %%BeginBinary byte count causes infinite loop denial of service |
| GHSA-vjc4-5qp5-m44j | Pillow JPEG2000 tiled decode retains a growing scratch buffer and can be used for denial of service |
| GHSA-9hw9-ch79-4vh6 (high) | Pillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode... |
| GHSA-4g5m-c9r5-49xf | LiteLLM: Local file read via request-supplied OIDC file references |
| GHSA-5jmr-gcrj-2c9q | LiteLLM: Arbitrary file write via path traversal in Skills archive extraction |
| GHSA-72m8-9m7m-h278 | LiteLLM: Custom Code Guardrails production endpoints bypass code safety checks |
| GHSA-7488-6r32-c95q | LiteLLM: MCP Authentication Bypass via OAuth2 Passthrough Fallback |
| GHSA-hx8v-g79f-8w5f | LiteLLM Proxy has server-side request forgery via the `user_config` request parameter |
| GHSA-mq44-7p77-q5h7 | AIOHTTP: WebSocket client accepts compressed frames without negotiated permessage-deflate |
| GHSA-82r6-8w77-94w6 | AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing |
| GHSA-5p39-cfhj-2xmp | AnyIO process-pool workers can block indefinitely on undrained stderr |
| GHSA-rwj8-pgh3-r573 (high) | GitPython: Environment-variable exfiltration via os.path.expandvars() on Repo.clone_from() URL |
| GHSA-956x-8gvw-wg5v (high) | GitPython: command injection via unguarded Git options in `Repo.archive()`, `git.ls_remote()`, an... |
| GHSA-2f96-g7mh-g2hx (high) | GitPython: Command Injection via git long-option prefix abbreviation bypass of CVE-2026-42215 blo... |
| GHSA-mv93-w799-cj2w (high) | GitPython: Newline injection in config_writer() section parameter bypasses CVE-2026-42215 patch, ... |
| GHSA-3rp5-jjmw-4wv2 (high) | GitPython: git-config section-name injection enables arbitrary config directives (core.sshCommand... |
| GHSA-mfx4-hv73-q22v | AIOHTTP: HTTP request smuggling via WebSocket upgrade |
| GHSA-cq5v-8q36-5273 | AIOHTTP: Out-of-bounds heap read in C HTTP response parser error path (malformed chunked response) |
| GHSA-539m-9xh6-q6rr (medium) | GitPython: Incomplete unsafe_git_archive_options denylist omits --add-file / --add-virtual-file, ... |
| GHSA-3f7w-8rr8-f37f (high) | GitPython: Unguarded git option forwarding in IndexFile.checkout() and TagReference.create() enab... |
| GHSA-p538-c434-8v24 (medium) | GitPython: Arbitrary file truncation via git rev-list --output argument injection in unguarded Co... |
| GHSA-94p4-4cq8-9g67 (high) | GitPython: Environment-variable exfiltration via Repo.create_remote() / Remote.add() URL (incompl... |
| GHSA-6p8h-3wgx-97gf (high) | GitPython: Incomplete unsafe_git_clone_options denylist omits --template enabling arbitrary comma... |
| GHSA-fjr4-x663-mwxc (high) | GitPython: Arbitrary file overwrite via git diff --output argument injection in Diffable.diff (ke... |
| GHSA-r9mr-m37c-5fr3 (high) | GitPython: Unsafe git option guard bypass via single-character kwarg value token smuggling enable... |
| GHSA-hh9p-6wh2-4mfc (medium) | GitPython: Arbitrary file read via --pathspec-from-file in IndexFile.remove() and Head.checkout() |
| GHSA-9rj7-rf2p-w77r (high) | GitPython: Unguarded git option forwarding in Repo.init enables arbitrary command execution via -... |
| GHSA-4gmw-gg2m-w46p (high) | GitPython: Unguarded git read-tree option forwarding in IndexFile.from_tree/reset/merge_tree enab... |
| GHSA-wvpp-8hx9-p66j (high) | GitPython: Unsafe git option guard bypass via split_single_char_options=False short-option token ... |
| GHSA-jm78-9fvv-mhgr (high) | GitPython: git-config OPTION-name injection via =/#/whitespace bypasses name validator, enabling ... |
| GHSA-hmq2-w58f-27jc (high) | GitPython: Arbitrary Git Repository Creation Outside the Working Tree via Unvalidated .gitmodules... |
| GHSA-7833-fr7j-v32q (high) | GitPython: Arbitrary local file content disclosure via [include] directive in untrusted .gitmodul... |
| GHSA-284h-m62q-gf8w (critical) | GitPython: Dormant multi-line git-config values are corrupted into live injected directives (e.g.... |
| GHSA-8mcc-hrx5-hvxc (high) | GitPython: clone_from()/clone() omit --separate-git-dir from unsafe_git_clone_options, enabling a... |
| GHSA-5xxx-qhh7-9287 (medium) | GitPython: Incomplete unsafe_git_revision_options denylist omits --contents/-S, enabling arbitrar... |
| GHSA-3wxw-xv34-2frg (medium) | GitPython: TagReference.create positional reference bypasses kwargs-only --file guard, enabling a... |
| GHSA-3cv6-jpf6-8222 (medium) | LiteLLM: Authenticated SSRF and provider-credential exfiltration via unvalidated request-body rou... |
| GHSA-j934-xhv5-fg8f (medium) | Soup Sieve: Polynomial-time ReDoS (O(n²)) in the whitespace/comment trimming regex `RE_WS_END` (t... |
| GHSA-gjv8-xp57-g29c (medium) | Soup Sieve: Polynomial-time ReDoS (O(n²)) in the `IDENTIFIER` / `VALUE` selector sub-patterns |
| PYSEC-2026-3982 (high) | GitPython: Repository content can impersonate the git directory, leading to arbitrary code execution |
| PYSEC-2026-3984 (high) | GitPython: Denial of Service via catastrophic backtracking (ReDoS) in Actor.name_email_regex — co... |
| GHSA-8988-9cw3-xx77 | urllib3: HTTPS proxy TLS configuration may be ignored or overridden |
| GHSA-gh4c-6fx4-qh6g | urllib3: Chunked Deflate streaming can enter an infinite loop |
| GHSA-vxq7-64xx-v4gw | urllib3: HTTPResponse.stream()/read_chunked() buffers an unbounded chunk-size line into memory |
| GHSA-2g87-pp6c-29x5 | aiohttp: Multiple instances of excessive or unbounded memory/CPU use |
| GHSA-69x8-hrgq-fjj8 | LiteLLM: Password hash exposure and pass-the-hash authentication bypass |
Data from Homebrew/advisory-database. Run brew vulns aider for a live check.
Analytics:
| 30 days | 90 days | 365 days | |
|---|---|---|---|
| Installs | 441 | 1,420 | 10,031 |
Installs (--HEAD) | 0 | 3 | 15 |
| Installs on Request | 441 | 1,420 | 10,030 |
Installs on Request (--HEAD) | 0 | 3 | 15 |
| Build Errors | 0 |